hys-ui 0.2.0 → 0.3.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 (201) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +15 -1
  3. package/dist/components/HysAlert/HysAlert.vue.js +5 -54
  4. package/dist/components/HysAlert/HysAlert2.vue.js +159 -2
  5. package/dist/components/HysAutocomplete/HysAutocomplete.vue.js +2 -2
  6. package/dist/components/HysAutocomplete/HysAutocomplete2.vue.js +285 -273
  7. package/dist/components/HysAvatarGroup/HysAvatarGroup.vue.js +1 -1
  8. package/dist/components/HysAvatarGroup/HysAvatarGroup2.vue.js +102 -98
  9. package/dist/components/HysBreadcrumb/HysBreadcrumb.vue.js +1 -1
  10. package/dist/components/HysBreadcrumb/HysBreadcrumb2.vue.js +273 -59
  11. package/dist/components/HysCalendar/HysCalendar.vue.js +3 -3
  12. package/dist/components/HysCalendar/HysCalendar2.vue.js +237 -225
  13. package/dist/components/HysCascader/HysCascader.vue.js +2 -2
  14. package/dist/components/HysCascader/HysCascader2.vue.js +337 -324
  15. package/dist/components/HysColorPicker/HysColorPanel.vue.js +7 -0
  16. package/dist/components/HysColorPicker/HysColorPanel2.vue.js +238 -0
  17. package/dist/components/HysColorPicker/HysColorPicker.vue.js +2 -2
  18. package/dist/components/HysColorPicker/HysColorPicker2.vue.js +239 -217
  19. package/dist/components/HysCommandPalette/HysCommandPalette.vue.js +90 -76
  20. package/dist/components/HysContextMenu/HysContextMenu.vue.js +5 -89
  21. package/dist/components/HysContextMenu/HysContextMenu2.vue.js +247 -2
  22. package/dist/components/HysContextMenu/HysMenuPanel.vue.js +7 -0
  23. package/dist/components/HysContextMenu/HysMenuPanel2.vue.js +208 -0
  24. package/dist/components/HysContextMenu/HysMenuSlot.js +10 -0
  25. package/dist/components/HysDataGrid/HysDataGrid.vue.js +1 -1
  26. package/dist/components/HysDataGrid/HysDataGrid2.vue.js +1008 -559
  27. package/dist/components/HysDatePicker/HysDatePicker.vue.js +2 -0
  28. package/dist/components/HysDatePicker/HysDatePickerControl.vue.js +2 -2
  29. package/dist/components/HysDatePicker/HysDatePickerControl2.vue.js +539 -526
  30. package/dist/components/HysDateRangePicker/HysDateRangePicker.vue.js +5 -3
  31. package/dist/components/HysDrawer/HysDrawer.vue.js +1 -1
  32. package/dist/components/HysDrawer/HysDrawer2.vue.js +434 -84
  33. package/dist/components/HysEmpty/HysEmpty.vue.js +5 -41
  34. package/dist/components/HysEmpty/HysEmpty2.vue.js +181 -2
  35. package/dist/components/HysFormItem/HysFormItem.vue.js +2 -2
  36. package/dist/components/HysFormItem/HysFormItem2.vue.js +171 -164
  37. package/dist/components/HysGantt/HysGantt.vue.js +1 -1
  38. package/dist/components/HysGantt/HysGantt2.vue.js +810 -795
  39. package/dist/components/HysMention/HysMention.vue.js +1 -1
  40. package/dist/components/HysMention/HysMention2.vue.js +112 -100
  41. package/dist/components/HysModal/HysModal.vue.js +2 -2
  42. package/dist/components/HysModal/HysModal2.vue.js +490 -85
  43. package/dist/components/HysPopover/HysPopover.vue.js +5 -91
  44. package/dist/components/HysPopover/HysPopover2.vue.js +120 -2
  45. package/dist/components/HysProgress/HysProgress.vue.js +2 -2
  46. package/dist/components/HysProgress/HysProgress2.vue.js +319 -52
  47. package/dist/components/HysSelect/HysSelect.vue.js +2 -2
  48. package/dist/components/HysSelect/HysSelect2.vue.js +730 -594
  49. package/dist/components/HysSlider/HysSlider.vue.js +2 -2
  50. package/dist/components/HysSlider/HysSlider2.vue.js +192 -188
  51. package/dist/components/HysSlider/SliderTooltip.vue.js +2 -2
  52. package/dist/components/HysSlider/SliderTooltip2.vue.js +103 -89
  53. package/dist/components/HysTable/HysTable.vue.js +2 -2
  54. package/dist/components/HysTable/HysTable2.vue.js +389 -368
  55. package/dist/components/HysTagInput/HysTagInput.vue.js +5 -82
  56. package/dist/components/HysTagInput/HysTagInput2.vue.js +396 -2
  57. package/dist/components/HysTimeline/HysTimeline.vue.js +2 -2
  58. package/dist/components/HysTimeline/HysTimeline2.vue.js +243 -24
  59. package/dist/components/HysTooltip/HysTooltip.vue.js +5 -64
  60. package/dist/components/HysTooltip/HysTooltip2.vue.js +110 -2
  61. package/dist/components/HysTour/HysTour.vue.js +46 -42
  62. package/dist/components/HysTransfer/HysTransfer.vue.js +2 -2
  63. package/dist/components/HysTransfer/HysTransfer2.vue.js +237 -207
  64. package/dist/components/HysTransfer/HysTransferPanel.vue.js +1 -1
  65. package/dist/components/HysTransfer/HysTransferPanel2.vue.js +320 -271
  66. package/dist/components/HysTree/HysTree.vue.js +2 -2
  67. package/dist/components/HysTree/HysTree2.vue.js +195 -184
  68. package/dist/components/HysTreeSelect/HysTreeSelect.vue.js +4 -4
  69. package/dist/components/HysTreeSelect/HysTreeSelect2.vue.js +389 -377
  70. package/dist/components/HysUpload/HysUpload.vue.js +2 -2
  71. package/dist/components/HysUpload/HysUpload2.vue.js +459 -125
  72. package/dist/components/HysVirtualTable/HysVirtualTable.vue.js +5 -94
  73. package/dist/components/HysVirtualTable/HysVirtualTable2.vue.js +656 -2
  74. package/dist/composables/color.js +97 -0
  75. package/dist/composables/dataGrid.js +68 -0
  76. package/dist/composables/drawer.js +17 -0
  77. package/dist/composables/feedback.js +14 -0
  78. package/dist/composables/menu.js +96 -0
  79. package/dist/composables/modal.js +14 -0
  80. package/dist/composables/overlayManager.js +48 -18
  81. package/dist/composables/progress.js +94 -0
  82. package/dist/composables/tagInput.js +16 -0
  83. package/dist/composables/timeline.js +19 -0
  84. package/dist/composables/transfer.js +19 -17
  85. package/dist/composables/upload.js +55 -0
  86. package/dist/composables/uploadRequest.js +58 -0
  87. package/dist/composables/useAlert.js +124 -0
  88. package/dist/composables/useColorPicker.js +402 -0
  89. package/dist/composables/useContextMenu.js +514 -0
  90. package/dist/composables/useDataGridRemote.js +67 -0
  91. package/dist/composables/useDialog.js +86 -43
  92. package/dist/composables/useDrawerPush.js +33 -0
  93. package/dist/composables/useDrawerResize.js +221 -0
  94. package/dist/composables/useFloating.js +110 -76
  95. package/dist/composables/useHysModal.js +185 -0
  96. package/dist/composables/useModal.js +295 -0
  97. package/dist/composables/useModalInteraction.js +394 -0
  98. package/dist/composables/usePopupSurface.js +458 -0
  99. package/dist/composables/useTagInput.js +313 -0
  100. package/dist/composables/useTransferMotion.js +185 -0
  101. package/dist/composables/useUpload.js +472 -0
  102. package/dist/composables/useUploadModel.js +65 -0
  103. package/dist/composables/useUploadRequests.js +266 -0
  104. package/dist/composables/useVirtualTableLayout.js +277 -0
  105. package/dist/composables/virtualTable.js +43 -0
  106. package/dist/index.js +27 -24
  107. package/dist/internal/PopupReference.js +39 -0
  108. package/dist/internal/PopupSurfacePanel.vue.js +7 -0
  109. package/dist/internal/PopupSurfacePanel2.vue.js +92 -0
  110. package/dist/motion/PopupMotion.js +105 -0
  111. package/dist/motion/popup.js +10 -0
  112. package/dist/style.css +1 -1
  113. package/dist/types/components/HysAlert/HysAlert.vue.d.ts +32 -22
  114. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +7 -7
  115. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +6 -1
  116. package/dist/types/components/HysBadge/HysBadge.vue.d.ts +3 -3
  117. package/dist/types/components/HysBreadcrumb/HysBreadcrumb.vue.d.ts +54 -31
  118. package/dist/types/components/HysCalendar/HysCalendar.vue.d.ts +3 -2
  119. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +7 -7
  120. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +2 -2
  121. package/dist/types/components/HysColorPicker/HysColorPanel.vue.d.ts +58 -0
  122. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +63 -10
  123. package/dist/types/components/HysCommandPalette/HysCommandPalette.vue.d.ts +2 -1
  124. package/dist/types/components/HysContextMenu/HysContextMenu.vue.d.ts +50 -34
  125. package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +79 -0
  126. package/dist/types/components/HysContextMenu/HysMenuSlot.d.ts +8 -0
  127. package/dist/types/components/HysDataGrid/HysDataGrid.vue.d.ts +65 -118
  128. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +1 -1
  129. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +92 -35
  130. package/dist/types/components/HysEmpty/HysEmpty.vue.d.ts +24 -20
  131. package/dist/types/components/HysFileManager/HysFileManager.vue.d.ts +2 -2
  132. package/dist/types/components/HysGantt/HysGantt.vue.d.ts +2 -1
  133. package/dist/types/components/HysMention/HysMention.vue.d.ts +2 -1
  134. package/dist/types/components/HysModal/HysModal.vue.d.ts +111 -34
  135. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +41 -29
  136. package/dist/types/components/HysProgress/HysProgress.vue.d.ts +18 -24
  137. package/dist/types/components/HysResizablePanel/HysResizablePanel.vue.d.ts +2 -2
  138. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +13 -4
  139. package/dist/types/components/HysSlider/HysSlider.vue.d.ts +5 -4
  140. package/dist/types/components/HysSlider/SliderTooltip.vue.d.ts +3 -1
  141. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +2 -2
  142. package/dist/types/components/HysTable/HysTable.vue.d.ts +4 -4
  143. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +2 -2
  144. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +47 -25
  145. package/dist/types/components/HysTimeline/HysTimeline.vue.d.ts +19 -32
  146. package/dist/types/components/HysTooltip/HysTooltip.vue.d.ts +39 -19
  147. package/dist/types/components/HysTour/HysTour.vue.d.ts +2 -1
  148. package/dist/types/components/HysTransfer/HysTransfer.vue.d.ts +2 -2
  149. package/dist/types/components/HysTransfer/HysTransferPanel.vue.d.ts +5 -3
  150. package/dist/types/components/HysTree/HysTree.vue.d.ts +2 -2
  151. package/dist/types/components/HysUpload/HysUpload.vue.d.ts +55 -67
  152. package/dist/types/components/HysVirtualTable/HysVirtualTable.vue.d.ts +71 -40
  153. package/dist/types/composables/autocomplete.d.ts +3 -0
  154. package/dist/types/composables/avatar.d.ts +3 -0
  155. package/dist/types/composables/cascader.d.ts +3 -0
  156. package/dist/types/composables/color.d.ts +97 -0
  157. package/dist/types/composables/dataGrid.d.ts +100 -0
  158. package/dist/types/composables/datePicker.d.ts +3 -0
  159. package/dist/types/composables/drawer.d.ts +102 -0
  160. package/dist/types/composables/feedback.d.ts +98 -0
  161. package/dist/types/composables/formContext.d.ts +2 -0
  162. package/dist/types/composables/menu.d.ts +183 -0
  163. package/dist/types/composables/modal.d.ts +183 -0
  164. package/dist/types/composables/overlayManager.d.ts +7 -3
  165. package/dist/types/composables/popupSurface.d.ts +83 -0
  166. package/dist/types/composables/progress.d.ts +92 -0
  167. package/dist/types/composables/selectOptions.d.ts +2 -0
  168. package/dist/types/composables/table.d.ts +3 -0
  169. package/dist/types/composables/tagInput.d.ts +96 -0
  170. package/dist/types/composables/timeline.d.ts +82 -0
  171. package/dist/types/composables/transfer.d.ts +7 -0
  172. package/dist/types/composables/tree.d.ts +3 -0
  173. package/dist/types/composables/treeSelect.d.ts +3 -0
  174. package/dist/types/composables/upload.d.ts +202 -0
  175. package/dist/types/composables/uploadRequest.d.ts +3 -0
  176. package/dist/types/composables/useAlert.d.ts +21 -0
  177. package/dist/types/composables/useCascader.d.ts +1 -1
  178. package/dist/types/composables/useColorPicker.d.ts +101 -0
  179. package/dist/types/composables/useContextMenu.d.ts +81 -0
  180. package/dist/types/composables/useDataGridRemote.d.ts +15 -0
  181. package/dist/types/composables/useDialog.d.ts +16 -3
  182. package/dist/types/composables/useDrawerPush.d.ts +6 -0
  183. package/dist/types/composables/useDrawerResize.d.ts +27 -0
  184. package/dist/types/composables/useFloating.d.ts +21 -2
  185. package/dist/types/composables/useHysModal.d.ts +44 -0
  186. package/dist/types/composables/useModal.d.ts +62 -0
  187. package/dist/types/composables/useModalInteraction.d.ts +27 -0
  188. package/dist/types/composables/usePopupSurface.d.ts +3341 -0
  189. package/dist/types/composables/useTagInput.d.ts +66 -0
  190. package/dist/types/composables/useTransferMotion.d.ts +36 -0
  191. package/dist/types/composables/useUpload.d.ts +94 -0
  192. package/dist/types/composables/useUploadModel.d.ts +14 -0
  193. package/dist/types/composables/useUploadRequests.d.ts +38 -0
  194. package/dist/types/composables/useVirtualTableLayout.d.ts +51 -0
  195. package/dist/types/composables/virtualTable.d.ts +126 -0
  196. package/dist/types/index.d.ts +17 -2
  197. package/dist/types/internal/PopupReference.d.ts +18 -0
  198. package/dist/types/internal/PopupSurfacePanel.vue.d.ts +37 -0
  199. package/dist/types/motion/PopupMotion.d.ts +59 -0
  200. package/dist/types/motion/popup.d.ts +12 -0
  201. package/package.json +1 -1
@@ -1,105 +1,119 @@
1
- import { defineComponent as T, useId as B, ref as l, computed as U, watch as z, onMounted as H, onActivated as I, onDeactivated as R, onUnmounted as $, openBlock as r, createElementBlock as c, Fragment as b, createElementVNode as a, mergeProps as C, unref as i, createVNode as q, createTextVNode as _, createBlock as F, Teleport as S, withModifiers as j, withDirectives as G, vModelText as J, renderList as O, normalizeClass as Q, toDisplayString as x, createCommentVNode as D, nextTick as W } from "vue";
2
- import { useHysRootAttrs as X } from "../../config.js";
3
- import { Command as Y } from "lucide-vue-next";
4
- import { useDialog as Z } from "../../composables/useDialog.js";
5
- const ee = ["aria-controls"], te = ["id"], oe = ["aria-selected", "onPointerenter", "onClick"], ne = { key: 0 }, se = /* @__PURE__ */ T({
1
+ import { defineComponent as N, useId as B, ref as a, computed as U, watch as H, onMounted as R, onActivated as $, onDeactivated as q, onUnmounted as F, openBlock as l, createElementBlock as p, Fragment as C, createElementVNode as s, mergeProps as _, unref as o, createVNode as x, createTextVNode as D, createBlock as S, Teleport as j, withCtx as G, withModifiers as J, withDirectives as O, vModelText as Q, renderList as W, normalizeClass as X, toDisplayString as E, createCommentVNode as L, nextTick as Y } from "vue";
2
+ import Z from "../../motion/PopupMotion.js";
3
+ import { useHysRootAttrs as ee } from "../../config.js";
4
+ import { Command as te } from "lucide-vue-next";
5
+ import { useDialog as oe } from "../../composables/useDialog.js";
6
+ const ne = ["aria-controls"], ie = ["id"], re = ["aria-selected", "onPointerenter", "onClick"], ae = { key: 0 }, ce = /* @__PURE__ */ N({
6
7
  __name: "HysCommandPalette",
7
8
  props: {
9
+ popupTransition: {},
10
+ popupTransitionDuration: {},
8
11
  actions: {}
9
12
  },
10
13
  emits: ["select"],
11
- setup(E, { emit: L }) {
12
- const f = X(), M = E, P = L, y = B(), s = l(!1), u = l(""), t = l(0), k = l(null), A = l(null), h = l(), { active: K } = Z(s, h, d), o = U(() => M.actions.filter((e) => (e.label + " " + (e.description || "")).toLowerCase().includes(u.value.toLowerCase())));
13
- z(u, () => t.value = 0);
14
- function w() {
15
- s.value = !0, u.value = "", t.value = 0, W(() => {
14
+ setup(T, { emit: M }) {
15
+ const y = ee(), m = T, P = M, k = B(), u = a(!1), d = a(""), t = a(0), h = a(null), A = a(null), w = a(), { active: I, zIndex: K } = oe(u, w, i), n = U(() => m.actions.filter((e) => (e.label + " " + (e.description || "")).toLowerCase().includes(d.value.toLowerCase())));
16
+ H(d, () => t.value = 0);
17
+ function g() {
18
+ u.value = !0, d.value = "", t.value = 0, Y(() => {
16
19
  var e;
17
- return (e = k.value) == null ? void 0 : e.focus();
20
+ return (e = h.value) == null ? void 0 : e.focus();
18
21
  });
19
22
  }
20
- function d() {
21
- s.value = !1;
23
+ function i() {
24
+ u.value = !1;
22
25
  }
23
- function g(e) {
24
- P("select", e), d();
26
+ function b(e) {
27
+ P("select", e), i();
25
28
  }
26
- function v(e) {
27
- e.defaultPrevented || (e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), s.value ? d() : w());
29
+ function c(e) {
30
+ e.defaultPrevented || (e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), u.value ? i() : g());
28
31
  }
29
32
  function V(e) {
30
- e.isComposing || e.keyCode === 229 || (e.key === "ArrowDown" && (e.preventDefault(), t.value = (t.value + 1) % Math.max(1, o.value.length)), e.key === "ArrowUp" && (e.preventDefault(), t.value = (t.value - 1 + Math.max(1, o.value.length)) % Math.max(1, o.value.length)), e.key === "Enter" && o.value[t.value] && g(o.value[t.value].id));
33
+ e.isComposing || e.keyCode === 229 || (e.key === "ArrowDown" && (e.preventDefault(), t.value = (t.value + 1) % Math.max(1, n.value.length)), e.key === "ArrowUp" && (e.preventDefault(), t.value = (t.value - 1 + Math.max(1, n.value.length)) % Math.max(1, n.value.length)), e.key === "Enter" && n.value[t.value] && b(n.value[t.value].id));
31
34
  }
32
- return H(() => window.addEventListener("keydown", v)), I(() => window.addEventListener("keydown", v)), R(() => window.removeEventListener("keydown", v)), $(() => window.removeEventListener("keydown", v)), (e, p) => (r(), c(b, null, [
33
- a("button", C(i(f), {
35
+ return R(() => window.addEventListener("keydown", c)), $(() => window.addEventListener("keydown", c)), q(() => window.removeEventListener("keydown", c)), F(() => window.removeEventListener("keydown", c)), (e, v) => (l(), p(C, null, [
36
+ s("button", _(o(y), {
34
37
  ref_key: "trigger",
35
38
  ref: A,
36
39
  type: "button",
37
40
  class: "hys-ui-v4-control",
38
- onClick: w
41
+ onClick: g
39
42
  }), [
40
- q(i(Y), {
43
+ x(o(te), {
41
44
  size: 14,
42
45
  "aria-hidden": "true"
43
46
  }),
44
- p[1] || (p[1] = _(" / Ctrl + K · 快捷命令", -1))
47
+ v[1] || (v[1] = D(" / Ctrl + K · 快捷命令", -1))
45
48
  ], 16),
46
- (r(), F(S, { to: "body" }, [
47
- s.value && i(K) ? (r(), c("div", C({ key: 0 }, i(f), {
48
- class: "hys-ui-v4-backdrop",
49
- onPointerdown: j(d, ["self"])
50
- }), [
51
- a("section", {
52
- ref_key: "dialog",
53
- ref: h,
54
- tabindex: "-1",
55
- class: "hys-ui-v4-dialog",
56
- role: "dialog",
57
- "aria-modal": "true",
58
- "aria-label": "快捷命令"
59
- }, [
60
- G(a("input", {
61
- ref_key: "input",
62
- ref: k,
63
- "onUpdate:modelValue": p[0] || (p[0] = (n) => u.value = n),
64
- class: "hys-ui-v4-control",
65
- placeholder: "搜索操作…",
66
- role: "combobox",
67
- "aria-controls": i(y),
68
- "aria-expanded": !0,
69
- onKeydown: V
70
- }, null, 40, ee), [
71
- [J, u.value]
72
- ]),
73
- a("div", {
74
- id: i(y),
75
- role: "listbox",
76
- class: "hys-ui-v4-scroll"
77
- }, [
78
- (r(!0), c(b, null, O(o.value, (n, m) => (r(), c("button", {
79
- type: "button",
80
- key: n.id,
81
- class: Q(["hys-ui-v4-option", { "hys-ui-v4-active": m === t.value }]),
82
- role: "option",
83
- "aria-selected": m === t.value,
84
- onPointerenter: (N) => t.value = m,
85
- onClick: (N) => g(n.id)
49
+ (l(), S(j, { to: "body" }, [
50
+ x(o(Z), {
51
+ "ignore-owner": "",
52
+ "popup-transition": m.popupTransition,
53
+ "popup-transition-duration": m.popupTransitionDuration,
54
+ onInactive: i
55
+ }, {
56
+ default: G(() => [
57
+ u.value && o(I) ? (l(), p("div", _({ key: 0 }, o(y), {
58
+ class: "hys-ui-v4-backdrop hys-ui-popup-backdrop",
59
+ style: { zIndex: o(K) },
60
+ onPointerdown: J(i, ["self"])
61
+ }), [
62
+ s("section", {
63
+ ref_key: "dialog",
64
+ ref: w,
65
+ tabindex: "-1",
66
+ class: "hys-ui-v4-dialog",
67
+ role: "dialog",
68
+ "aria-modal": "true",
69
+ "aria-label": "快捷命令"
86
70
  }, [
87
- _(x(n.label) + " ", 1),
88
- a("small", null, x(n.description), 1)
89
- ], 42, oe))), 128)),
90
- o.value.length ? D("", !0) : (r(), c("p", ne, "没有匹配的命令"))
91
- ], 8, te),
92
- a("button", {
93
- type: "button",
94
- class: "hys-ui-v4-option",
95
- onClick: d
96
- }, "关闭 Esc")
97
- ], 512)
98
- ], 16)) : D("", !0)
71
+ O(s("input", {
72
+ ref_key: "input",
73
+ ref: h,
74
+ "onUpdate:modelValue": v[0] || (v[0] = (r) => d.value = r),
75
+ class: "hys-ui-v4-control",
76
+ placeholder: "搜索操作…",
77
+ role: "combobox",
78
+ "aria-controls": o(k),
79
+ "aria-expanded": !0,
80
+ onKeydown: V
81
+ }, null, 40, ne), [
82
+ [Q, d.value]
83
+ ]),
84
+ s("div", {
85
+ id: o(k),
86
+ role: "listbox",
87
+ class: "hys-ui-v4-scroll"
88
+ }, [
89
+ (l(!0), p(C, null, W(n.value, (r, f) => (l(), p("button", {
90
+ type: "button",
91
+ key: r.id,
92
+ class: X(["hys-ui-v4-option", { "hys-ui-v4-active": f === t.value }]),
93
+ role: "option",
94
+ "aria-selected": f === t.value,
95
+ onPointerenter: (z) => t.value = f,
96
+ onClick: (z) => b(r.id)
97
+ }, [
98
+ D(E(r.label) + " ", 1),
99
+ s("small", null, E(r.description), 1)
100
+ ], 42, re))), 128)),
101
+ n.value.length ? L("", !0) : (l(), p("p", ae, "没有匹配的命令"))
102
+ ], 8, ie),
103
+ s("button", {
104
+ type: "button",
105
+ class: "hys-ui-v4-option",
106
+ onClick: i
107
+ }, "关闭 Esc")
108
+ ], 512)
109
+ ], 16)) : L("", !0)
110
+ ]),
111
+ _: 1
112
+ }, 8, ["popup-transition", "popup-transition-duration"])
99
113
  ]))
100
114
  ], 64));
101
115
  }
102
116
  });
103
117
  export {
104
- se as default
118
+ ce as default
105
119
  };
@@ -1,91 +1,7 @@
1
- import { defineComponent as _, ref as h, watch as R, onBeforeUnmount as S, onDeactivated as T, openBlock as i, createElementBlock as a, Fragment as k, createElementVNode as K, mergeProps as M, unref as A, renderSlot as B, createBlock as N, Teleport as U, renderList as V, withModifiers as q, createTextVNode as F, toDisplayString as O, createCommentVNode as P, nextTick as I } from "vue";
2
- import { useHysRootAttrs as W } from "../../config.js";
3
- import { registerOverlay as X } from "../../composables/overlayManager.js";
4
- const Y = ["tabindex"], j = {
5
- key: 0,
6
- role: "separator"
7
- }, z = ["disabled", "onClick"], Z = /* @__PURE__ */ _({
8
- __name: "HysContextMenu",
9
- props: {
10
- items: {},
11
- disabled: { type: Boolean }
12
- },
13
- emits: ["select"],
14
- setup(v, { emit: D }) {
15
- const w = v, H = D, g = W(), m = h(!1), f = h(8), y = h(8), l = h();
16
- let u, p, s;
17
- function r(e = !1) {
18
- m.value = !1, u == null || u(), u = void 0, document.removeEventListener("pointerdown", b, !0), document.removeEventListener("keydown", x, !0), e && (s != null && s.isConnected) && s.focus();
19
- }
20
- function b(e) {
21
- var n;
22
- (n = l.value) != null && n.contains(e.target) || r();
23
- }
24
- function x(e) {
25
- e.key === "Escape" && (p != null && p()) && (e.preventDefault(), e.stopImmediatePropagation(), r(!0));
26
- }
27
- async function E(e) {
28
- var d, c, C;
29
- if (w.disabled) return;
30
- e.preventDefault(), r(), s = document.activeElement;
31
- const n = e.currentTarget.getBoundingClientRect();
32
- f.value = e instanceof MouseEvent ? e.clientX : n.left, y.value = e instanceof MouseEvent ? e.clientY : n.bottom, m.value = !0;
33
- const t = X("floating", () => r(!0));
34
- if (u = t.unregister, p = t.isTop, await I(), !m.value) return;
35
- const o = (d = l.value) == null ? void 0 : d.getBoundingClientRect();
36
- f.value = Math.max(8, Math.min(f.value, window.innerWidth - ((o == null ? void 0 : o.width) || 190) - 8)), y.value = Math.max(8, Math.min(y.value, window.innerHeight - ((o == null ? void 0 : o.height) || 240) - 8)), (C = (c = l.value) == null ? void 0 : c.querySelector('[role="menuitem"]:not(:disabled)')) == null || C.focus(), document.addEventListener("pointerdown", b, !0), document.addEventListener("keydown", x, !0);
37
- }
38
- function L(e) {
39
- var d, c;
40
- if (!["ArrowUp", "ArrowDown", "Home", "End"].includes(e.key)) return;
41
- e.preventDefault();
42
- const n = Array.from(((d = l.value) == null ? void 0 : d.querySelectorAll('[role="menuitem"]:not(:disabled)')) || []), t = n.indexOf(document.activeElement), o = e.key === "Home" ? 0 : e.key === "End" ? n.length - 1 : (t + (e.key === "ArrowUp" ? -1 : 1) + n.length) % n.length;
43
- (c = n[o]) == null || c.focus();
44
- }
45
- return R(() => w.disabled, (e) => {
46
- e && r();
47
- }), S(() => r()), T(() => r()), (e, n) => (i(), a(k, null, [
48
- K("div", M(A(g), {
49
- tabindex: v.disabled ? -1 : 0,
50
- "aria-haspopup": "menu",
51
- onContextmenu: E,
52
- onKeydown: n[0] || (n[0] = (t) => (t.key === "ContextMenu" || t.shiftKey && t.key === "F10") && E(t))
53
- }), [
54
- B(e.$slots, "default")
55
- ], 16, Y),
56
- (i(), N(U, { to: "body" }, [
57
- m.value ? (i(), a("div", M({
58
- key: 0,
59
- ref_key: "panel",
60
- ref: l
61
- }, A(g), {
62
- class: "hys-ui-ent-context",
63
- role: "menu",
64
- style: { left: f.value + "px", top: y.value + "px" },
65
- onKeydown: L
66
- }), [
67
- (i(!0), a(k, null, V(v.items, (t) => (i(), a(k, {
68
- key: t.value
69
- }, [
70
- t.type === "divider" ? (i(), a("hr", j)) : (i(), a("button", {
71
- key: 1,
72
- type: "button",
73
- role: "menuitem",
74
- disabled: t.disabled,
75
- onClick: q((o) => {
76
- H("select", t.value), r(!0);
77
- }, ["stop"])
78
- }, [
79
- B(e.$slots, "item", { item: t }, () => [
80
- F(O(t.label), 1)
81
- ])
82
- ], 8, z))
83
- ], 64))), 128))
84
- ], 16)) : P("", !0)
85
- ]))
86
- ], 64));
87
- }
88
- });
1
+ import o from "./HysContextMenu2.vue.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-cf298f23"]]);
89
5
  export {
90
- Z as default
6
+ m as default
91
7
  };
@@ -1,4 +1,249 @@
1
- import f from "./HysContextMenu.vue.js";
1
+ import { defineComponent as E, useSlots as W, computed as r, ref as b, useId as V, useAttrs as U, onUpdated as j, openBlock as d, createElementBlock as P, Fragment as S, createElementVNode as T, mergeProps as v, unref as t, createVNode as q, createBlock as x, Teleport as G, normalizeStyle as J, renderList as B, withCtx as f, createSlots as Q, renderSlot as k, createCommentVNode as X } from "vue";
2
+ import { useHysRootAttrs as Y } from "../../config.js";
3
+ import { useContextMenu as Z } from "../../composables/useContextMenu.js";
4
+ import _ from "../../motion/PopupMotion.js";
5
+ import ee from "./HysMenuPanel.vue.js";
6
+ import te from "./HysMenuSlot.js";
7
+ const oe = ["tabindex"], re = /* @__PURE__ */ E({
8
+ inheritAttrs: !1,
9
+ __name: "HysContextMenu",
10
+ props: {
11
+ items: { default: () => [] },
12
+ fieldNames: {},
13
+ disabled: { type: Boolean },
14
+ loading: { type: Boolean },
15
+ size: {},
16
+ trigger: { default: "contextmenu" },
17
+ open: { type: Boolean, default: void 0 },
18
+ defaultOpen: { type: Boolean },
19
+ openPath: {},
20
+ defaultOpenPath: {},
21
+ checkedKeys: {},
22
+ defaultCheckedKeys: {},
23
+ selectedKeys: {},
24
+ defaultSelectedKeys: {},
25
+ selectable: { type: Boolean },
26
+ multiple: { type: Boolean },
27
+ hideOnClick: { type: Boolean, default: !0 },
28
+ autofocus: { type: Boolean, default: !0 },
29
+ loopNavigation: { type: Boolean, default: !0 },
30
+ showDelay: {},
31
+ hideDelay: {},
32
+ submenuDelay: {},
33
+ submenuTrigger: { default: "hover" },
34
+ placement: { default: "bottom-start" },
35
+ appendTo: { type: [String, Boolean], default: "body" },
36
+ width: {},
37
+ minWidth: { default: 190 },
38
+ maxWidth: { default: 360 },
39
+ maxHeight: { default: 320 },
40
+ arrow: { type: Boolean },
41
+ popupClass: {},
42
+ popupStyle: {},
43
+ direction: { default: "ltr" },
44
+ ariaLabel: { default: "操作菜单" },
45
+ emptyText: { default: "暂无操作" },
46
+ loadingText: { default: "加载中…" },
47
+ backText: { default: "返回" },
48
+ popupTransition: {},
49
+ popupTransitionDuration: {}
50
+ },
51
+ emits: ["select", "update:open", "visibleChange", "update:openPath", "openPathChange", "update:checkedKeys", "checkedChange", "update:selectedKeys", "selectionChange"],
52
+ setup(l, { expose: H, emit: I }) {
53
+ const u = l, $ = W(), F = r(
54
+ () => ["item", "icon", "link", "empty", "loading"].filter(
55
+ (a) => !!$[a]
56
+ )
57
+ ), O = I, p = b(), c = b(), R = b(), m = "hys-menu-" + V(), C = Y(), z = U(), e = Z(
58
+ u,
59
+ p,
60
+ c,
61
+ R,
62
+ m,
63
+ O
64
+ );
65
+ j(e.measureTrigger);
66
+ const y = r(() => ({
67
+ "aria-haspopup": "menu",
68
+ "aria-expanded": e.open.value,
69
+ "aria-controls": e.open.value ? m + "-menu-0" : void 0,
70
+ "aria-disabled": e.control.disabled.value || void 0,
71
+ ...e.control.disabled.value ? { tabindex: -1 } : {}
72
+ })), M = r(() => ({
73
+ open: e.open.value,
74
+ show: e.show,
75
+ hide: e.hide,
76
+ toggle: e.toggle,
77
+ attrs: y.value
78
+ })), h = (a, o, n, i) => Number.isFinite(a) ? Math.max(n, Math.min(i, a)) : o, w = r(() => h(u.maxWidth, 360, 80, 1600)), A = r(() => ({
79
+ "--hys-ui-menu-min-width": h(u.minWidth, 190, 80, w.value) + "px",
80
+ "--hys-ui-menu-max-width": w.value + "px",
81
+ "--hys-ui-menu-max-height": h(u.maxHeight, 320, 80, 1600) + "px"
82
+ }));
83
+ function L(a, o) {
84
+ e.setPanel(a, o == null ? void 0 : o.element);
85
+ }
86
+ function N(a) {
87
+ return {
88
+ ...u.popupStyle,
89
+ ...a ? e.childStyles.value[a] ?? {
90
+ position: "fixed",
91
+ visibility: "hidden"
92
+ } : e.floating.style.value,
93
+ ...A.value
94
+ };
95
+ }
96
+ return H({
97
+ element: p,
98
+ open: e.open,
99
+ checkedKeys: e.checkedKeys,
100
+ selectedKeys: e.selectedKeys,
101
+ openPath: e.openPath,
102
+ focus: e.focus,
103
+ blur: () => {
104
+ var o, n;
105
+ e.hide();
106
+ const a = document.activeElement;
107
+ a && ((o = p.value) != null && o.contains(a) || (n = c.value) != null && n.contains(a)) && a.blur();
108
+ },
109
+ show: e.show,
110
+ showAt: (a, o, n = !0) => e.show({ x: a, y: o, focus: n }),
111
+ hide: e.hide,
112
+ handleOpen: () => e.show(),
113
+ handleClose: e.hide,
114
+ toggle: e.toggle,
115
+ focusItem: e.focusItem,
116
+ openSubmenu: e.openSubmenu,
117
+ closeSubmenus: e.closeSubmenus,
118
+ setCheckedKeys: e.setCheckedKeys,
119
+ setSelectedKeys: e.setSelectedKeys,
120
+ getItems: e.getItems
121
+ }), (a, o) => (d(), P(S, null, [
122
+ T("div", v({
123
+ ref_key: "root",
124
+ ref: p
125
+ }, { ...t(C), ...t(z), ...y.value }, {
126
+ class: ["hys-ui-menu-trigger", {
127
+ "hys-ui-menu-inline": !t(e).triggers.value.includes("contextmenu"),
128
+ "hys-ui-menu-disabled": t(e).control.disabled.value
129
+ }],
130
+ tabindex: t(e).control.disabled.value ? -1 : t(e).focusableChild.value ? void 0 : 0,
131
+ onContextmenu: o[0] || (o[0] = //@ts-ignore
132
+ (...n) => t(e).contextmenu && t(e).contextmenu(...n)),
133
+ onClick: o[1] || (o[1] = //@ts-ignore
134
+ (...n) => t(e).triggerClick && t(e).triggerClick(...n)),
135
+ onKeydown: o[2] || (o[2] = //@ts-ignore
136
+ (...n) => t(e).triggerKey && t(e).triggerKey(...n)),
137
+ onPointerenter: o[3] || (o[3] = (n) => t(e).hoverRoot(!0, n)),
138
+ onPointerleave: o[4] || (o[4] = (n) => t(e).hoverRoot(!1, n)),
139
+ onFocusin: o[5] || (o[5] = //@ts-ignore
140
+ (...n) => t(e).triggerFocus && t(e).triggerFocus(...n)),
141
+ onFocusout: o[6] || (o[6] = //@ts-ignore
142
+ (...n) => t(e).focusOut && t(e).focusOut(...n))
143
+ }), [
144
+ q(t(te), {
145
+ content: a.$slots.default,
146
+ scope: M.value,
147
+ "node-attrs": y.value
148
+ }, null, 8, ["content", "scope", "node-attrs"])
149
+ ], 16, oe),
150
+ (d(), x(G, {
151
+ to: l.appendTo === !1 ? "body" : l.appendTo,
152
+ disabled: l.appendTo === !1
153
+ }, [
154
+ T("div", {
155
+ ref_key: "layer",
156
+ ref: c,
157
+ class: "hys-ui-menu-layer",
158
+ style: J({ zIndex: t(e).floating.style.value.zIndex }),
159
+ onPointerenter: o[10] || (o[10] = //@ts-ignore
160
+ (...n) => t(e).enterPanel && t(e).enterPanel(...n)),
161
+ onPointerleave: o[11] || (o[11] = (n) => t(e).hoverRoot(!1, n)),
162
+ onFocusout: o[12] || (o[12] = //@ts-ignore
163
+ (...n) => t(e).focusOut && t(e).focusOut(...n))
164
+ }, [
165
+ (d(!0), P(S, null, B(t(e).menus.value, (n, i) => (d(), x(t(_), {
166
+ key: i,
167
+ "popup-transition": l.popupTransition,
168
+ "popup-transition-duration": l.popupTransitionDuration,
169
+ placement: i ? l.direction === "rtl" ? "left" : "right" : t(e).floating.placement.value,
170
+ onInactive: t(e).forceHide,
171
+ onEntered: o[9] || (o[9] = (g) => t(e).scheduleLayout(!0))
172
+ }, {
173
+ default: f(() => {
174
+ var g, K;
175
+ return [
176
+ t(e).open.value && t(e).live.value ? (d(), x(ee, v({
177
+ key: 0,
178
+ ref_for: !0,
179
+ ref: (s) => L(i, s)
180
+ }, { ref_for: !0 }, t(C), {
181
+ class: [
182
+ l.popupClass,
183
+ {
184
+ "hys-ui-menu-covered": i < t(e).menus.value.length - 1,
185
+ "hys-ui-menu-arrow": !i && l.arrow
186
+ }
187
+ ],
188
+ "data-size": t(e).control.size.value,
189
+ "data-level": i,
190
+ "data-placement": i ? "right" : t(e).floating.placement.value,
191
+ style: N(i),
192
+ rows: n,
193
+ level: i,
194
+ id: m + "-menu-" + i,
195
+ "root-id": m,
196
+ label: i && ((g = t(e).branches.value[i - 1]) == null ? void 0 : g.label) || l.ariaLabel,
197
+ "parent-label": (K = t(e).branches.value[i - 1]) == null ? void 0 : K.label,
198
+ busy: t(e).busy.value,
199
+ loading: !!l.loading,
200
+ direction: l.direction,
201
+ "empty-text": l.emptyText,
202
+ "loading-text": l.loadingText,
203
+ "back-text": l.backText,
204
+ context: t(e).context,
205
+ tabbable: t(e).tabbable,
206
+ onChoose: t(e).choose,
207
+ onFocusRow: o[7] || (o[7] = (s) => t(e).setActive(s)),
208
+ onHoverRow: t(e).hoverRow,
209
+ onKeyboard: (s) => t(e).keyboard(i, s),
210
+ onBack: (s) => t(e).setPath(t(e).openPath.value.slice(0, i - 1), !0),
211
+ onScroll: o[8] || (o[8] = (s) => t(e).scheduleLayout())
212
+ }), Q({ _: 2 }, [
213
+ B(F.value, (s) => ({
214
+ name: s,
215
+ fn: f((D) => [
216
+ k(a.$slots, s, v({ ref_for: !0 }, D || {}), void 0, !0)
217
+ ])
218
+ })),
219
+ !i && a.$slots.header ? {
220
+ name: "header",
221
+ fn: f(() => [
222
+ k(a.$slots, "header", {
223
+ close: () => t(e).hide()
224
+ }, void 0, !0)
225
+ ]),
226
+ key: "0"
227
+ } : void 0,
228
+ !i && a.$slots.footer ? {
229
+ name: "footer",
230
+ fn: f(() => [
231
+ k(a.$slots, "footer", {
232
+ close: () => t(e).hide()
233
+ }, void 0, !0)
234
+ ]),
235
+ key: "1"
236
+ } : void 0
237
+ ]), 1040, ["class", "data-size", "data-level", "data-placement", "style", "rows", "level", "id", "label", "parent-label", "busy", "loading", "direction", "empty-text", "loading-text", "back-text", "context", "tabbable", "onChoose", "onHoverRow", "onKeyboard", "onBack"])) : X("", !0)
238
+ ];
239
+ }),
240
+ _: 2
241
+ }, 1032, ["popup-transition", "popup-transition-duration", "placement", "onInactive"]))), 128))
242
+ ], 36)
243
+ ], 8, ["to", "disabled"]))
244
+ ], 64));
245
+ }
246
+ });
2
247
  export {
3
- f as default
248
+ re as default
4
249
  };
@@ -0,0 +1,7 @@
1
+ import o from "./HysMenuPanel2.vue.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const r = /* @__PURE__ */ t(o, [["__scopeId", "data-v-92fbebaf"]]);
5
+ export {
6
+ r as default
7
+ };