hys-ui 0.3.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 (93) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +68 -73
  3. package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +5 -41
  4. package/dist/components/HysAnimatedNumber/HysAnimatedNumber2.vue.js +146 -2
  5. package/dist/components/HysButton/HysButton.vue.js +2 -2
  6. package/dist/components/HysButton/HysButton2.vue.js +227 -60
  7. package/dist/components/HysButtonGroup/HysButtonGroup.vue.js +7 -0
  8. package/dist/components/HysButtonGroup/HysButtonGroup2.vue.js +51 -0
  9. package/dist/components/HysMention/HysMention.vue.js +1 -1
  10. package/dist/components/HysMention/HysMention2.vue.js +1092 -154
  11. package/dist/components/HysModal/HysModal.vue.js +3 -3
  12. package/dist/components/HysModal/HysModal2.vue.js +81 -80
  13. package/dist/components/HysPagination/HysPagination.vue.js +2 -2
  14. package/dist/components/HysPagination/HysPagination2.vue.js +243 -180
  15. package/dist/components/HysSearch/HysSearch.vue.js +5 -82
  16. package/dist/components/HysSearch/HysSearch2.vue.js +176 -2
  17. package/dist/components/HysSelect/HysSelect.vue.js +2 -2
  18. package/dist/components/HysSelect/HysSelect2.vue.js +472 -443
  19. package/dist/components/HysSplitPane/HysSplitPane.vue.js +315 -58
  20. package/dist/components/HysSplitPane/HysSplitPane3.vue.js +5 -0
  21. package/dist/components/HysTable/HysTable.vue.js +2 -2
  22. package/dist/components/HysTable/HysTable2.vue.js +1418 -1150
  23. package/dist/components/HysTour/HysTour.vue.js +291 -67
  24. package/dist/components/HysTour/HysTour3.vue.js +5 -0
  25. package/dist/composables/buttonGroup.js +12 -0
  26. package/dist/composables/floatingPosition.js +18 -0
  27. package/dist/composables/mentionDocument.js +79 -0
  28. package/dist/composables/mentionEditor.js +58 -0
  29. package/dist/composables/selectOptions.js +44 -38
  30. package/dist/composables/splitPaneSizes.js +58 -0
  31. package/dist/composables/table.js +128 -105
  32. package/dist/composables/useDialog.js +50 -50
  33. package/dist/composables/useFloating.js +107 -103
  34. package/dist/composables/useMentionCaret.js +81 -0
  35. package/dist/composables/useMentionList.js +81 -0
  36. package/dist/composables/useMentionModel.js +90 -0
  37. package/dist/composables/useMentionOptions.js +421 -0
  38. package/dist/composables/useSplitPaneDrag.js +52 -0
  39. package/dist/composables/useSplitPaneStorage.js +38 -0
  40. package/dist/composables/useTable.js +344 -312
  41. package/dist/composables/useTableSticky.js +79 -0
  42. package/dist/composables/useTourLayout.js +129 -0
  43. package/dist/config.js +11 -11
  44. package/dist/index.js +175 -156
  45. package/dist/internal/MultiSplitPane.vue.js +305 -0
  46. package/dist/internal/MultiSplitPane2.vue.js +4 -0
  47. package/dist/style.css +1 -1
  48. package/dist/types/components/HysAnimatedNumber/HysAnimatedNumber.vue.d.ts +61 -7
  49. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +1 -1
  50. package/dist/types/components/HysButton/HysButton.vue.d.ts +82 -22
  51. package/dist/types/components/HysButtonGroup/HysButtonGroup.vue.d.ts +30 -0
  52. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +2 -2
  53. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +2 -2
  54. package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +2 -2
  55. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +2 -2
  56. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +1 -1
  57. package/dist/types/components/HysMention/HysMention.vue.d.ts +91 -40
  58. package/dist/types/components/HysModal/HysModal.vue.d.ts +1 -1
  59. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +2 -2
  60. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +55 -4
  61. package/dist/types/components/HysRating/HysRating.vue.d.ts +1 -1
  62. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +45 -7
  63. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +6 -1
  64. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +125 -14
  65. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +1 -1
  66. package/dist/types/components/HysTable/HysTable.vue.d.ts +1740 -3
  67. package/dist/types/components/HysTour/HysTour.vue.d.ts +46 -9
  68. package/dist/types/composables/buttonGroup.d.ts +9 -0
  69. package/dist/types/composables/floatingPosition.d.ts +14 -0
  70. package/dist/types/composables/mention.d.ts +284 -0
  71. package/dist/types/composables/mentionDocument.d.ts +15 -0
  72. package/dist/types/composables/mentionEditor.d.ts +7 -0
  73. package/dist/types/composables/modal.d.ts +2 -0
  74. package/dist/types/composables/selectOptions.d.ts +5 -0
  75. package/dist/types/composables/splitPaneSizes.d.ts +11 -0
  76. package/dist/types/composables/table.d.ts +116 -6
  77. package/dist/types/composables/tour.d.ts +68 -0
  78. package/dist/types/composables/useFloating.d.ts +1 -1
  79. package/dist/types/composables/useMentionCaret.d.ts +6 -0
  80. package/dist/types/composables/useMentionList.d.ts +23 -0
  81. package/dist/types/composables/useMentionModel.d.ts +14 -0
  82. package/dist/types/composables/useMentionOptions.d.ts +26 -0
  83. package/dist/types/composables/useSplitPaneDrag.d.ts +14 -0
  84. package/dist/types/composables/useSplitPaneStorage.d.ts +4 -0
  85. package/dist/types/composables/useTable.d.ts +7 -3
  86. package/dist/types/composables/useTableSticky.d.ts +22 -0
  87. package/dist/types/composables/useTourLayout.d.ts +33 -0
  88. package/dist/types/config.d.ts +1 -0
  89. package/dist/types/index.d.ts +36 -1
  90. package/dist/types/internal/MultiSplitPane.vue.d.ts +54 -0
  91. package/package.json +3 -2
  92. package/dist/components/HysSplitPane/HysSplitPane2.vue.js +0 -4
  93. package/dist/components/HysTour/HysTour2.vue.js +0 -4
@@ -1,5 +1,5 @@
1
1
  import type { HysPopupTransition } from '../motion/popup';
2
- import type { CSSProperties, HTMLAttributes, VNodeChild } from "vue";
2
+ import type { Component, CSSProperties, HTMLAttributes, VNodeChild } from "vue";
3
3
  import type { Placement } from "./useFloating";
4
4
  export type HysTableKey = string | number;
5
5
  export type HysTableDirection = "asc" | "desc";
@@ -20,6 +20,22 @@ export interface HysTableSelectionColumn {
20
20
  fixed?: boolean | "left" | "right";
21
21
  align?: "left" | "center" | "right";
22
22
  }
23
+ export interface HysTableRowSelectionOptions {
24
+ range?: boolean;
25
+ /** 只允许指定行绕过行级选择限制。 */
26
+ ignoreSelectable?: boolean;
27
+ }
28
+ export interface HysTableSelectionAction<T extends object = Record<string, unknown>> {
29
+ key: string;
30
+ label: string;
31
+ disabled?: boolean;
32
+ select: (context: {
33
+ rows: readonly T[];
34
+ keys: readonly HysTableKey[];
35
+ selectedKeys: readonly HysTableKey[];
36
+ setSelected: (keys: readonly HysTableKey[]) => Promise<boolean>;
37
+ }) => void | Promise<void>;
38
+ }
23
39
  export interface HysTableFilterConfirmOptions {
24
40
  closeDropdown?: boolean;
25
41
  }
@@ -30,12 +46,26 @@ export interface HysTableScrollRowOptions {
30
46
  behavior?: ScrollBehavior;
31
47
  block?: "start" | "center" | "end" | "nearest";
32
48
  }
49
+ export interface HysTableStickyOptions {
50
+ offsetHeader?: number;
51
+ offsetScroll?: number;
52
+ getContainer?: () => HTMLElement | Window | null | undefined;
53
+ }
33
54
  export interface HysTableFilter {
34
55
  label: string;
35
56
  value: HysTableFilterValue;
36
57
  disabled?: boolean;
37
58
  children?: readonly HysTableFilter[];
38
59
  }
60
+ export interface HysTableFilterDropdownContext<T extends object = Record<string, unknown>> {
61
+ column: HysTableColumn<T>;
62
+ open: boolean;
63
+ values: readonly HysTableFilterValue[];
64
+ setValues: (values: readonly HysTableFilterValue[]) => void;
65
+ confirm: (options?: HysTableFilterConfirmOptions) => void;
66
+ clear: (options?: HysTableFilterResetOptions) => void;
67
+ close: () => void;
68
+ }
39
69
  export type HysTableElementAttrs = HTMLAttributes & Record<string, unknown>;
40
70
  export type HysTablePaginationPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
41
71
  export interface HysTableCellContext<T extends object = Record<string, unknown>> {
@@ -45,6 +75,28 @@ export interface HysTableCellContext<T extends object = Record<string, unknown>>
45
75
  rowIndex: number;
46
76
  columnIndex: number;
47
77
  }
78
+ export interface HysTableOverflowTooltipOptions {
79
+ placement?: Placement;
80
+ effect?: "light" | "dark";
81
+ maxWidth?: number | string;
82
+ offset?: number;
83
+ hideDelay?: number;
84
+ enterable?: boolean;
85
+ }
86
+ export interface HysTableComponents {
87
+ table?: Component;
88
+ header?: {
89
+ wrapper?: Component;
90
+ row?: Component;
91
+ cell?: Component;
92
+ };
93
+ body?: {
94
+ wrapper?: Component;
95
+ row?: Component;
96
+ cell?: Component;
97
+ rowHeaderCell?: Component;
98
+ };
99
+ }
48
100
  export interface HysTableColumn<T extends object = any> {
49
101
  key: string;
50
102
  label: string;
@@ -57,11 +109,18 @@ export interface HysTableColumn<T extends object = any> {
57
109
  fixed?: boolean | "left" | "right";
58
110
  align?: "left" | "center" | "right";
59
111
  headerAlign?: "left" | "center" | "right";
112
+ /** 合并同一层、同一固定区域内相邻的叶列表头。0 隐藏标题。 */
113
+ headerColSpan?: number;
114
+ /** 表头插槽未提供内容时渲染列标题。 */
115
+ renderHeader?: (column: HysTableColumn<T>, sorts: readonly HysTableSort[]) => VNodeChild;
60
116
  sortable?: boolean | "custom";
61
117
  sorter?: (a: T, b: T) => number;
62
118
  sortBy?: string | ((row: T) => unknown) | readonly (string | ((row: T) => unknown))[];
63
119
  sortOrders?: readonly (HysTableDirection | null)[];
64
120
  defaultSortOrder?: HysTableDirection;
121
+ /** 受控排序方向,null 清除该列排序。表格级 sort 和 sorts 优先。 */
122
+ sortOrder?: HysTableDirection | null;
123
+ showSorterTooltip?: boolean | HysTableOverflowTooltipOptions;
65
124
  sortPriority?: number;
66
125
  filters?: readonly HysTableFilter[];
67
126
  filterable?: boolean;
@@ -69,11 +128,25 @@ export interface HysTableColumn<T extends object = any> {
69
128
  filterMode?: "menu" | "tree";
70
129
  filterSearch?: boolean | ((query: string, option: HysTableFilter) => boolean);
71
130
  defaultFilterValue?: readonly HysTableFilterValue[];
131
+ /** 受控筛选值,空数组清除该列筛选。表格级 filters 优先。 */
132
+ filteredValue?: readonly HysTableFilterValue[];
133
+ filtered?: boolean;
134
+ filterDropdownOpen?: boolean;
135
+ onFilterDropdownOpenChange?: (open: boolean) => void;
136
+ filterPlacement?: Placement;
137
+ renderFilterIcon?: (context: {
138
+ column: HysTableColumn<T>;
139
+ filtered: boolean;
140
+ open: boolean;
141
+ }) => VNodeChild;
142
+ renderFilterDropdown?: (context: HysTableFilterDropdownContext<T>) => VNodeChild;
72
143
  filterResetToDefault?: boolean;
73
144
  filterMethod?: (value: HysTableFilterValue, row: T, column: HysTableColumn<T>) => boolean;
74
145
  formatter?: (row: T, column: HysTableColumn<T>, value: unknown, index: number) => VNodeChild;
75
- ellipsis?: boolean;
76
- showOverflowTooltip?: boolean;
146
+ ellipsis?: boolean | {
147
+ showTitle?: boolean;
148
+ };
149
+ showOverflowTooltip?: boolean | HysTableOverflowTooltipOptions;
77
150
  tooltipFormatter?: (context: HysTableCellContext<T>) => VNodeChild;
78
151
  className?: string;
79
152
  headerClassName?: string;
@@ -91,12 +164,20 @@ export interface HysTablePagination {
91
164
  position?: readonly HysTablePaginationPosition[];
92
165
  page?: number;
93
166
  pageSize?: number;
167
+ defaultPage?: number;
168
+ defaultPageSize?: number;
94
169
  total?: number;
170
+ /** 服务端分页的总页数,可在总记录数未知时使用。 */
171
+ pageCount?: number;
95
172
  pageSizeOptions?: number[];
96
173
  showSizeChanger?: boolean;
97
174
  showQuickJumper?: boolean;
98
175
  showTotal?: boolean;
99
176
  compact?: boolean;
177
+ layout?: string;
178
+ size?: "sm" | "md" | "lg";
179
+ responsive?: boolean;
180
+ siblingCount?: number;
100
181
  hideOnSinglePage?: boolean;
101
182
  }
102
183
  export interface HysTableQuery<T extends object = Record<string, unknown>> {
@@ -131,6 +212,8 @@ export interface HysTableLocale {
131
212
  resizeColumn: string;
132
213
  sortAsc: string;
133
214
  sortDesc: string;
215
+ sortClear?: string;
216
+ stickyScrollLabel?: string;
134
217
  filterSearch?: string;
135
218
  noFilterMatch?: string;
136
219
  invertSelection?: string;
@@ -141,6 +224,9 @@ export interface HysTableLocale {
141
224
  perPage: string;
142
225
  jump: string;
143
226
  page: string;
227
+ pageItem: string;
228
+ navigation: string;
229
+ confirm: string;
144
230
  first: string;
145
231
  previous: string;
146
232
  next: string;
@@ -153,9 +239,13 @@ export interface HysTableProps<T extends object> {
153
239
  locale?: Partial<HysTableLocale>;
154
240
  columns: readonly HysTableColumn<T>[];
155
241
  rows: readonly T[];
242
+ /** 替换表格的结构组件。自定义组件需转发属性与默认插槽,并保留原生表格元素。 */
243
+ components?: HysTableComponents;
156
244
  rowKey?: string | ((row: T) => HysTableKey);
157
245
  emptyText?: string;
158
246
  loading?: boolean;
247
+ /** replace 用加载行替换数据,overlay 保留当前行并覆盖加载提示。 */
248
+ loadingMode?: "replace" | "overlay";
159
249
  disabled?: boolean;
160
250
  striped?: boolean;
161
251
  bordered?: boolean;
@@ -165,9 +255,15 @@ export interface HysTableProps<T extends object> {
165
255
  height?: number | string;
166
256
  maxHeight?: number | string;
167
257
  stickyHeader?: boolean;
258
+ /** 随页面或自定义容器滚动固定表头和水平滚动条。 */
259
+ sticky?: boolean | HysTableStickyOptions;
168
260
  showHeader?: boolean;
169
261
  fit?: boolean;
262
+ /** 表格横向最小宽度,用于控制滚动区域内的列布局。 */
263
+ scrollWidth?: number | string;
170
264
  scrollbarAlwaysOn?: boolean;
265
+ /** 使用浏览器默认的滚动条样式。 */
266
+ nativeScrollbar?: boolean;
171
267
  scrollbarTabindex?: number | string;
172
268
  headerRowClassName?: string | ((columns: readonly HysTableColumn<T>[], level: number) => string);
173
269
  headerRowStyle?: CSSProperties | ((columns: readonly HysTableColumn<T>[], level: number) => CSSProperties);
@@ -188,7 +284,7 @@ export interface HysTableProps<T extends object> {
188
284
  reserveSelection?: boolean;
189
285
  checkStrictly?: boolean;
190
286
  selectOnIndeterminate?: boolean;
191
- selectionActions?: boolean;
287
+ selectionActions?: boolean | readonly HysTableSelectionAction<T>[];
192
288
  rangeSelection?: boolean;
193
289
  hideSelectAll?: boolean;
194
290
  selectionColumn?: HysTableSelectionColumn;
@@ -203,11 +299,15 @@ export interface HysTableProps<T extends object> {
203
299
  defaultSort?: HysTableSort | readonly HysTableSort[] | null;
204
300
  multiSort?: boolean;
205
301
  sortOrders?: readonly (HysTableDirection | null)[];
302
+ /** 悬停或聚焦列标题时提示下一次排序操作。 */
303
+ showSorterTooltip?: boolean | HysTableOverflowTooltipOptions;
206
304
  filters?: HysTableFilters;
207
305
  defaultFilters?: HysTableFilters;
208
306
  filterColumnKey?: string | null;
209
307
  filterPlacement?: Placement;
210
308
  appendFilterTo?: string | HTMLElement | false;
309
+ /** 根据触发元素指定排序、溢出与筛选浮层的挂载目标。 */
310
+ getPopupContainer?: (trigger: HTMLElement) => HTMLElement | string | false | undefined;
211
311
  pagination?: boolean | HysTablePagination;
212
312
  page?: number;
213
313
  pageSize?: number;
@@ -230,6 +330,10 @@ export interface HysTableProps<T extends object> {
230
330
  indent?: number;
231
331
  loadChildren?: (row: T, context: HysTableLoadContext) => readonly T[] | Promise<readonly T[]>;
232
332
  showSummary?: boolean;
333
+ /** 汇总全部筛选结果,或仅汇总当前页实际显示的行。 */
334
+ summaryScope?: "filtered" | "page";
335
+ /** 将汇总行固定在表格滚动区域底部。 */
336
+ stickySummary?: boolean;
233
337
  sumText?: string;
234
338
  summaryMethod?: (context: {
235
339
  columns: readonly HysTableColumn<T>[];
@@ -239,8 +343,13 @@ export interface HysTableProps<T extends object> {
239
343
  rowspan?: number;
240
344
  colspan?: number;
241
345
  } | readonly [number, number] | undefined;
242
- showOverflowTooltip?: boolean;
346
+ /** 默认溢出提示,列可覆盖配置或设置 false 关闭。 */
347
+ showOverflowTooltip?: boolean | HysTableOverflowTooltipOptions;
243
348
  tooltipFormatter?: (context: HysTableCellContext<T>) => VNodeChild;
349
+ /** 在列格式化后统一处理默认单元格内容。 */
350
+ transformCellText?: (context: HysTableCellContext<T> & {
351
+ text: VNodeChild;
352
+ }) => VNodeChild;
244
353
  resizable?: boolean;
245
354
  columnWidths?: Readonly<Record<string, number>>;
246
355
  allowDragLastColumn?: boolean;
@@ -256,7 +365,7 @@ export interface HysTableInstance<T extends object = Record<string, unknown>> {
256
365
  clearSelection: () => Promise<boolean>;
257
366
  getSelectionRows: () => T[];
258
367
  getHalfSelectionRows: () => T[];
259
- toggleRowSelection: (row: T | HysTableKey, selected?: boolean, range?: boolean) => Promise<boolean>;
368
+ toggleRowSelection: (row: T | HysTableKey, selected?: boolean, options?: boolean | HysTableRowSelectionOptions) => Promise<boolean>;
260
369
  toggleAllSelection: (selected?: boolean) => Promise<boolean>;
261
370
  invertSelection: () => Promise<boolean>;
262
371
  setCurrentRow: (row?: T | HysTableKey | null) => Promise<boolean>;
@@ -295,6 +404,7 @@ export interface TableHeader<T extends object> {
295
404
  leaves: HysTableColumn<T>[];
296
405
  colspan: number;
297
406
  rowspan: number;
407
+ blank?: boolean;
298
408
  fixed?: "left" | "right";
299
409
  }
300
410
  export declare const tableToken: (key: HysTableKey) => string;
@@ -0,0 +1,68 @@
1
+ import type { Component, CSSProperties, VNode } from "vue";
2
+ import type { HysButtonProps } from "../components/HysButton/HysButton.vue";
3
+ import type { HysPopupMotionProps } from "../motion/popup";
4
+ import type { Placement } from "./useFloating";
5
+ export type HysTourTarget = string | HTMLElement | (() => HTMLElement | null | undefined);
6
+ export type HysTourContent = string | VNode | (() => string | VNode);
7
+ export type HysTourMask = boolean | {
8
+ color?: string;
9
+ style?: CSSProperties;
10
+ };
11
+ export interface HysTourGap {
12
+ /** Pixels around the target, either uniform or [horizontal, vertical]. */
13
+ offset?: number | [number, number];
14
+ radius?: number;
15
+ }
16
+ export interface HysTourButtonProps extends HysButtonProps {
17
+ children?: HysTourContent;
18
+ onClick?: (event: MouseEvent) => void;
19
+ }
20
+ export interface HysTourAppearance {
21
+ /** Preferred card placement; flips to the opposite side when space is limited. */
22
+ placement?: Placement;
23
+ mask?: HysTourMask;
24
+ gap?: HysTourGap;
25
+ showArrow?: boolean;
26
+ arrow?: boolean | {
27
+ pointAtCenter?: boolean;
28
+ };
29
+ type?: "default" | "primary";
30
+ contentStyle?: CSSProperties;
31
+ scrollIntoViewOptions?: boolean | ScrollIntoViewOptions;
32
+ targetAreaClickable?: boolean;
33
+ showClose?: boolean;
34
+ closeIcon?: string | Component;
35
+ prevButtonProps?: HysTourButtonProps;
36
+ nextButtonProps?: HysTourButtonProps;
37
+ }
38
+ export interface HysTourStep extends HysTourAppearance {
39
+ /** An element, CSS selector, or function returning the element. */
40
+ target?: HysTourTarget;
41
+ title?: HysTourContent;
42
+ description?: HysTourContent;
43
+ cover?: HysTourContent;
44
+ onClose?: () => void;
45
+ }
46
+ export interface HysTourProps extends HysPopupMotionProps, HysTourAppearance {
47
+ steps: readonly HysTourStep[];
48
+ /** Display state alias for v-model:open. */
49
+ open?: boolean;
50
+ /** Zero-based step index; supports v-model:current and external navigation. */
51
+ current?: number;
52
+ closeOnEscape?: boolean;
53
+ appendTo?: string | HTMLElement | false;
54
+ zIndex?: number;
55
+ skipText?: string;
56
+ prevText?: string;
57
+ nextText?: string;
58
+ finishText?: string;
59
+ }
60
+ export interface HysTourContext {
61
+ step: HysTourStep | undefined;
62
+ current: number;
63
+ total: number;
64
+ goTo: (index: number) => void;
65
+ previous: () => void;
66
+ next: () => void;
67
+ close: () => void;
68
+ }
@@ -15,7 +15,7 @@ export interface FloatingAnchor {
15
15
  readonly isConnected: boolean;
16
16
  }
17
17
  export declare function useFloating(anchor: Readonly<Ref<FloatingAnchor | undefined>>, panel: Ref<HTMLElement | undefined>, options?: {
18
- placement?: Placement;
18
+ placement?: Placement | (() => Placement);
19
19
  gap?: number;
20
20
  padding?: number;
21
21
  matchWidth?: boolean | "min" | (() => boolean | "min");
@@ -0,0 +1,6 @@
1
+ import { type Ref } from "vue";
2
+ import type { FloatingAnchor } from "./useFloating";
3
+ export declare function useMentionCaret(input: Readonly<Ref<HTMLElement | undefined>>, value: Readonly<Ref<string>>, start: () => number): {
4
+ anchor: import("vue").ComputedRef<FloatingAnchor | undefined>;
5
+ removeMirror: () => void;
6
+ };
@@ -0,0 +1,23 @@
1
+ import { type Ref } from "vue";
2
+ import type { HysMentionProps } from "./mention";
3
+ import type { MentionEntry } from "./useMentionOptions";
4
+ type ListRow = {
5
+ key: string;
6
+ group: string;
7
+ } | {
8
+ key: string;
9
+ entry: MentionEntry;
10
+ index: number;
11
+ };
12
+ export declare function useMentionList(props: HysMentionProps, choices: Readonly<Ref<readonly MentionEntry[]>>, element: Readonly<Ref<HTMLElement | undefined>>, loadMore: () => Promise<boolean>): {
13
+ rows: import("vue").ComputedRef<ListRow[]>;
14
+ enabled: import("vue").ComputedRef<MentionEntry[]>;
15
+ visibleRows: import("vue").ComputedRef<ListRow[]>;
16
+ topSpacer: import("vue").ComputedRef<number>;
17
+ bottomSpacer: import("vue").ComputedRef<number>;
18
+ rowHeight: import("vue").ComputedRef<number>;
19
+ onScroll: () => void;
20
+ reset: () => void;
21
+ ensureVisible: (key: string) => void;
22
+ };
23
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { HysMentionDocument, HysMentionEntity, HysMentionProps } from "./mention";
2
+ import type { MentionSelection } from "./mentionEditor";
3
+ export declare function mentionEntityKey(entity: HysMentionEntity): string;
4
+ export declare function diffMentionEntities(previous: HysMentionEntity[], next: HysMentionEntity[]): {
5
+ added: HysMentionEntity[];
6
+ removed: HysMentionEntity[];
7
+ };
8
+ export declare function useMentionModel(props: HysMentionProps, publish: (next: HysMentionDocument, previous: HysMentionDocument, changedText: boolean) => void, accepted: (next: HysMentionDocument, previous: HysMentionDocument) => void): {
9
+ value: import("vue").ComputedRef<string>;
10
+ entities: import("vue").ComputedRef<HysMentionEntity[]>;
11
+ document: import("vue").ComputedRef<HysMentionDocument>;
12
+ commit: (next: HysMentionDocument, selection: MentionSelection, notify?: () => void, record?: boolean, force?: boolean) => Promise<boolean>;
13
+ history: (direction: "undo" | "redo", selection: MentionSelection) => Promise<MentionSelection | undefined>;
14
+ };
@@ -0,0 +1,26 @@
1
+ import { type Ref } from "vue";
2
+ import type { HysMentionContext, HysMentionOption, HysMentionProps, HysMentionTrigger, HysMentionUser } from "./mention";
3
+ export interface MentionEntry {
4
+ key: string;
5
+ option: HysMentionOption;
6
+ user: HysMentionUser;
7
+ created?: boolean;
8
+ remote?: boolean;
9
+ }
10
+ export declare function useMentionOptions(props: HysMentionProps, context: Readonly<Ref<HysMentionContext | undefined>>, trigger: Readonly<Ref<HysMentionTrigger | undefined>>, dismissed: Readonly<Ref<boolean>>, text: Readonly<Ref<string>>, onError: (error: unknown, context: HysMentionContext) => void): {
11
+ entries: import("vue").ComputedRef<MentionEntry[]>;
12
+ choices: import("vue").ComputedRef<MentionEntry[]>;
13
+ enabled: import("vue").ComputedRef<MentionEntry[]>;
14
+ busy: import("vue").ComputedRef<boolean>;
15
+ loadingMore: Ref<boolean, boolean>;
16
+ hasMore: import("vue").ComputedRef<boolean>;
17
+ loadError: import("vue").ShallowRef<{
18
+ reason: unknown;
19
+ } | undefined, {
20
+ reason: unknown;
21
+ } | undefined>;
22
+ retry: () => void;
23
+ loadMore: () => Promise<boolean>;
24
+ cancelLoad: () => void;
25
+ remember: (option: HysMentionOption, prefix: string) => void;
26
+ };
@@ -0,0 +1,14 @@
1
+ interface DragSettings {
2
+ vertical: boolean;
3
+ direction: 1 | -1;
4
+ available: number;
5
+ initial: number;
6
+ constrain: (value: number) => number;
7
+ }
8
+ export declare function useSplitPaneDrag(update: (value: number) => void, ended: (value: number, cancelled: boolean, notify: boolean) => void): {
9
+ start: (event: PointerEvent, settings: DragSettings) => boolean;
10
+ cancel: (event: PointerEvent) => void;
11
+ finish: (cancelled: boolean, notify?: boolean) => void;
12
+ active: () => boolean;
13
+ };
14
+ export {};
@@ -0,0 +1,4 @@
1
+ import { type Ref } from "vue";
2
+ import type { HysSplitPaneSizes } from "../components/HysSplitPane/HysSplitPane.vue";
3
+ export declare function readStoredPaneSizes(value: unknown): HysSplitPaneSizes | undefined;
4
+ export declare function useSplitPaneStorage<T>(key: () => string | undefined, state: Ref<T | undefined>, decode: (value: unknown) => T | undefined): void;
@@ -1,4 +1,4 @@
1
- import { type HysTableProps, type HysTableKey, type HysTableColumn, type HysTableSort, type HysTableFilters, type HysTableFilterValue, type HysTableQuery, type TableNode } from "./table";
1
+ import { type HysTableProps, type HysTableKey, type HysTableColumn, type HysTableSort, type HysTableFilters, type HysTableFilterValue, type HysTableQuery, type HysTableRowSelectionOptions, type TableNode } from "./table";
2
2
  export declare function useTable<T extends object>(props: HysTableProps<T>, columns: () => readonly HysTableColumn<T>[], hasExpand: () => boolean, emit: (name: string, ...args: any[]) => void): {
3
3
  live: import("vue").Ref<boolean, boolean>;
4
4
  busy: import("vue").ComputedRef<boolean>;
@@ -16,6 +16,7 @@ export declare function useTable<T extends object>(props: HysTableProps<T>, colu
16
16
  eligible: (node: TableNode<T>) => boolean;
17
17
  allSelected: import("vue").ComputedRef<boolean>;
18
18
  someSelected: import("vue").ComputedRef<boolean>;
19
+ selectionPage: import("vue").ComputedRef<TableNode<T>[]>;
19
20
  sorts: import("vue").ComputedRef<HysTableSort[]>;
20
21
  filters: import("vue").ComputedRef<HysTableFilters>;
21
22
  processed: import("vue").ComputedRef<{
@@ -26,7 +27,8 @@ export declare function useTable<T extends object>(props: HysTableProps<T>, colu
26
27
  display: import("vue").ComputedRef<TableNode<T>[]>;
27
28
  page: import("vue").ComputedRef<number>;
28
29
  pageSize: import("vue").ComputedRef<number>;
29
- total: import("vue").ComputedRef<number>;
30
+ pageCount: import("vue").ComputedRef<number>;
31
+ paginationTotal: import("vue").ComputedRef<number | undefined>;
30
32
  pagination: import("vue").ComputedRef<import("./table").HysTablePagination>;
31
33
  currentKey: import("vue").ComputedRef<HysTableKey | null>;
32
34
  currentRow: import("vue").ComputedRef<T | undefined>;
@@ -40,16 +42,18 @@ export declare function useTable<T extends object>(props: HysTableProps<T>, colu
40
42
  }>>;
41
43
  loadErrors: import("vue").ShallowRef<Map<string, unknown>, Map<string, unknown>>;
42
44
  canExpand: (node: TableNode<T>) => boolean;
45
+ nextSortOrder: (column: HysTableColumn<T>, direction?: "asc" | "desc") => import("./table").HysTableDirection | null;
43
46
  toggleSort: (column: HysTableColumn<T>, direction?: "asc" | "desc") => void;
44
47
  setSort: (value: HysTableSort | readonly HysTableSort[] | null) => void;
45
48
  setFilter: (key: string, values: readonly HysTableFilterValue[]) => void;
46
49
  clearFilter: (keys?: readonly string[]) => void;
47
50
  requestPage: (n: number, action?: "page" | "pageSize") => void;
48
51
  changeSize: (n: number) => void;
49
- toggleRowSelection: (value: T | HysTableKey, checked?: boolean, range?: boolean) => Promise<boolean>;
52
+ toggleRowSelection: (value: T | HysTableKey, checked?: boolean, options?: boolean | HysTableRowSelectionOptions) => Promise<boolean>;
50
53
  toggleAllSelection: (checked?: boolean) => Promise<boolean>;
51
54
  invertSelection: () => Promise<boolean>;
52
55
  clearSelection: () => Promise<boolean>;
56
+ selectPage: (keys: readonly HysTableKey[], nodes?: TableNode<T>[]) => Promise<boolean>;
53
57
  getSelectionRows: () => T[];
54
58
  getHalfSelectionRows: () => T[];
55
59
  setCurrentRow: (value?: T | HysTableKey | null) => Promise<boolean>;
@@ -0,0 +1,22 @@
1
+ import { type Ref } from "vue";
2
+ import type { HysTableStickyOptions } from "./table";
3
+ export declare function useTableSticky(viewport: Ref<HTMLElement | undefined>, header: Readonly<Ref<HTMLTableSectionElement | undefined>>, options: () => boolean | HysTableStickyOptions | undefined): {
4
+ headerTop: Ref<number, number>;
5
+ bar: import("vue").ShallowRef<{
6
+ top: number;
7
+ left: number;
8
+ width: number;
9
+ contentWidth: number;
10
+ direction: "ltr" | "rtl";
11
+ } | undefined, {
12
+ top: number;
13
+ left: number;
14
+ width: number;
15
+ contentWidth: number;
16
+ direction: "ltr" | "rtl";
17
+ } | undefined>;
18
+ scrollbar: Ref<HTMLElement | undefined, HTMLElement | undefined>;
19
+ syncScrollbar: () => void;
20
+ scrollViewport: (event: Event) => void;
21
+ scrollbarHeight: number;
22
+ };
@@ -0,0 +1,33 @@
1
+ import { type Ref } from "vue";
2
+ import type { HysTourAppearance, HysTourTarget } from "./tour";
3
+ export declare function useTourLayout(shown: Readonly<Ref<boolean>>, panel: Readonly<Ref<HTMLElement | undefined>>, settings: Readonly<Ref<HysTourAppearance>>, targetInput: Readonly<Ref<HysTourTarget | undefined>>): {
4
+ view: import("vue").ShallowRef<{
5
+ width: number;
6
+ height: number;
7
+ }, {
8
+ width: number;
9
+ height: number;
10
+ }>;
11
+ bounds: import("vue").ShallowRef<DOMRect | undefined, DOMRect | undefined>;
12
+ card: import("vue").ShallowRef<{
13
+ width: number;
14
+ height: number;
15
+ x: number;
16
+ y: number;
17
+ placement: import("./useFloating").Placement;
18
+ } | undefined, {
19
+ width: number;
20
+ height: number;
21
+ x: number;
22
+ y: number;
23
+ placement: import("./useFloating").Placement;
24
+ } | undefined>;
25
+ arrow: import("vue").ShallowRef<{
26
+ x: number;
27
+ y: number;
28
+ } | undefined, {
29
+ x: number;
30
+ y: number;
31
+ } | undefined>;
32
+ path: import("vue").ComputedRef<string>;
33
+ };
@@ -4,6 +4,7 @@ export type HysMotion = 'full' | 'subtle' | 'off';
4
4
  export interface HysConfig {
5
5
  theme?: MaybeRefOrGetter<HysTheme>;
6
6
  motion?: MaybeRefOrGetter<HysMotion>;
7
+ buttonAutoInsertSpace?: MaybeRefOrGetter<boolean>;
7
8
  }
8
9
  /** Call in a component setup. Reactive options are inherited by children and teleported panels. */
9
10
  export declare function provideHysConfig(config: HysConfig): void;
@@ -4,6 +4,8 @@ export type { HysAccordionKey } from './components/HysAccordion/HysAccordion.vue
4
4
  export type { HysAccordionItem } from './components/HysAccordion/HysAccordion.vue';
5
5
  export { default as HysAlert } from './components/HysAlert/HysAlert.vue';
6
6
  export { default as HysAnimatedNumber } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
7
+ export type { HysAnimatedNumberContext } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
8
+ export type { HysAnimatedNumberProps } from './components/HysAnimatedNumber/HysAnimatedNumber.vue';
7
9
  export { default as HysAutocomplete } from './components/HysAutocomplete/HysAutocomplete.vue';
8
10
  export { default as HysAvatar } from './components/HysAvatar/HysAvatar.vue';
9
11
  export { default as HysAvatarGroup } from './components/HysAvatarGroup/HysAvatarGroup.vue';
@@ -13,8 +15,17 @@ export type { HysBreadcrumbItem } from './components/HysBreadcrumb/HysBreadcrumb
13
15
  export type { HysBreadcrumbSelectInfo } from './components/HysBreadcrumb/HysBreadcrumb.vue';
14
16
  export type { HysBreadcrumbProps } from './components/HysBreadcrumb/HysBreadcrumb.vue';
15
17
  export { default as HysButton } from './components/HysButton/HysButton.vue';
18
+ export type { HysButtonPaletteColor } from './components/HysButton/HysButton.vue';
16
19
  export type { HysButtonVariant } from './components/HysButton/HysButton.vue';
20
+ export type { HysButtonAppearance } from './components/HysButton/HysButton.vue';
21
+ export type { HysButtonSize } from './components/HysButton/HysButton.vue';
22
+ export type { HysButtonActionContext } from './components/HysButton/HysButton.vue';
23
+ export type { HysButtonAction } from './components/HysButton/HysButton.vue';
24
+ export type { HysButtonActionGuard } from './components/HysButton/HysButton.vue';
25
+ export type { HysButtonInstance } from './components/HysButton/HysButton.vue';
17
26
  export type { HysButtonProps } from './components/HysButton/HysButton.vue';
27
+ export { default as HysButtonGroup } from './components/HysButtonGroup/HysButtonGroup.vue';
28
+ export type { HysButtonGroupProps } from './components/HysButtonGroup/HysButtonGroup.vue';
18
29
  export { default as HysCalendar } from './components/HysCalendar/HysCalendar.vue';
19
30
  export { default as HysCalendarNavigation } from './components/HysCalendarNavigation/HysCalendarNavigation.vue';
20
31
  export { default as HysCard } from './components/HysCard/HysCard.vue';
@@ -65,6 +76,8 @@ export { default as HysRating } from './components/HysRating/HysRating.vue';
65
76
  export { default as HysResizablePanel } from './components/HysResizablePanel/HysResizablePanel.vue';
66
77
  export { default as HysRichTextEditor } from './components/HysRichTextEditor/HysRichTextEditor.vue';
67
78
  export { default as HysSearch } from './components/HysSearch/HysSearch.vue';
79
+ export type { HysSearchProps } from './components/HysSearch/HysSearch.vue';
80
+ export type { HysSearchButtonContext } from './components/HysSearch/HysSearch.vue';
68
81
  export { default as HysSegmented } from './components/HysSegmented/HysSegmented.vue';
69
82
  export { default as HysSelect } from './components/HysSelect/HysSelect.vue';
70
83
  export { default as HysShortcutHelp } from './components/HysShortcutHelp/HysShortcutHelp.vue';
@@ -73,6 +86,19 @@ export type { HysSkeletonVariant } from './components/HysSkeleton/HysSkeleton.vu
73
86
  export { default as HysSlider } from './components/HysSlider/HysSlider.vue';
74
87
  export { default as HysSortableList } from './components/HysSortableList/HysSortableList.vue';
75
88
  export { default as HysSplitPane } from './components/HysSplitPane/HysSplitPane.vue';
89
+ export type { HysSplitPaneSide } from './components/HysSplitPane/HysSplitPane.vue';
90
+ export type { HysSplitPaneLength } from './components/HysSplitPane/HysSplitPane.vue';
91
+ export type { HysSplitPanePanelOptions } from './components/HysSplitPane/HysSplitPane.vue';
92
+ export type { HysSplitPanePanel } from './components/HysSplitPane/HysSplitPane.vue';
93
+ export type { HysSplitPaneSizes } from './components/HysSplitPane/HysSplitPane.vue';
94
+ export type { HysSplitPanePanelResize } from './components/HysSplitPane/HysSplitPane.vue';
95
+ export type { HysSplitPanePanelResizeEnd } from './components/HysSplitPane/HysSplitPane.vue';
96
+ export type { HysSplitPaneHandleContext } from './components/HysSplitPane/HysSplitPane.vue';
97
+ export type { HysSplitPaneProps } from './components/HysSplitPane/HysSplitPane.vue';
98
+ export type { HysSplitPaneSlotContext } from './components/HysSplitPane/HysSplitPane.vue';
99
+ export type { HysSplitPanePanelContext } from './components/HysSplitPane/HysSplitPane.vue';
100
+ export type { HysSplitPaneResizeEnd } from './components/HysSplitPane/HysSplitPane.vue';
101
+ export type { HysSplitPaneInstance } from './components/HysSplitPane/HysSplitPane.vue';
76
102
  export { default as HysSteps } from './components/HysSteps/HysSteps.vue';
77
103
  export type { HysStepStatus } from './components/HysSteps/HysSteps.vue';
78
104
  export type { HysStepItem } from './components/HysSteps/HysSteps.vue';
@@ -106,14 +132,23 @@ export type { HysInputProps, HysTextareaProps, HysInputFormatInfo, HysInputCount
106
132
  export { useHysToast, createHysToast } from './composables/useHysToast';
107
133
  export type { HysToastApi, HysToastOptions, HysToastConfig, HysToastHandle, HysToastServiceConfig, HysToastService } from './composables/useHysToast';
108
134
  export type { HysSliderValue, HysSliderStep, HysSliderMarks, HysSliderDragInfo, HysSliderInstance } from './composables/slider';
135
+ export type { HysSelectLabeledValue } from './composables/selectOptions';
109
136
  export type { HysAvatarProps, HysAvatarSize, HysAvatarBreakpoint, HysAvatarFit, HysAvatarLoadInfo, HysAvatarOption, HysAvatarInstance, HysAvatarGroupProps, HysAvatarGroupInstance } from './composables/avatar';
110
137
  export type { HysAutocompleteProps, HysAutocompleteRow, HysAutocompleteOption, HysAutocompleteItem, HysAutocompleteGroup, HysAutocompleteDataOption, HysAutocompleteContext, HysAutocompleteCallback, HysAutocompleteFetch, HysAutocompleteInstance } from './composables/autocomplete';
138
+ export type { HysMentionUser, HysMentionOption, HysMentionDataOption, HysMentionContext, HysMentionLoadContext, HysMentionFieldNames, HysMentionProps, HysMentionSlots, HysMentionPage, HysMentionLoader, HysMentionFilter, HysMentionSearchField, HysMentionSearchMode, HysMentionMatch, HysMentionTrigger, HysMentionSource, HysMentionEntity, HysMentionDocument, HysMentionOpenOptions, HysMentionInsertOptions, HysMentionAutosize, HysMentionLocale, HysMentionAction, HysMentionInstance } from './composables/mention';
139
+ export { matchMention, mentionTriggers, normalizeMentionEntities, serializeMentionDocument, deserializeMentionDocument, rebaseMentionEntities } from './composables/mentionDocument';
140
+ export { useMentionOptions } from './composables/useMentionOptions';
141
+ export type { MentionEntry as HysMentionEntry } from './composables/useMentionOptions';
142
+ export { useMentionList } from './composables/useMentionList';
143
+ export { useMentionCaret } from './composables/useMentionCaret';
144
+ export { useMentionModel } from './composables/useMentionModel';
145
+ export type { HysTourTarget, HysTourContent, HysTourMask, HysTourGap, HysTourButtonProps, HysTourAppearance, HysTourStep, HysTourProps, HysTourContext } from './composables/tour';
111
146
  export type { HysChoiceValue, HysChoiceFieldNames, HysChoiceOption, HysChoiceDataOption, HysCheckboxChange, HysCheckboxReject, HysCheckboxInstance, HysCheckboxGroupInstance, HysRadioInstance, HysRadioGroupInstance, HysSwitchGuardContext, HysSwitchInstance } from './composables/choice';
112
147
  export type { HysRatingIcon, HysRatingLevels, HysRatingInstance } from './composables/rating';
113
148
  export type { HysSegmentedOption, HysSegmentedInstance } from './composables/segmented';
114
149
  export type { HysGanttScrollOptions, HysGanttInstance, HysGanttDependencyChange, HysGanttDependencyMove, HysGanttDependencyInvalid, HysGanttDependencyReason, HysGanttHistoryType, HysGanttHistoryEntry, HysGanttHistoryState, HysGanttHistoryInvalid, HysGanttConflictType, HysGanttConflict } from './composables/gantt';
115
150
  export type { CalendarEvent, HysCalendarValue, HysCalendarMode, HysCalendarTransition, HysCalendarAction, HysCalendarCell, HysCalendarMonthCell, HysCalendarSelectInfo, HysCalendarInstance } from './composables/calendar';
116
- export type { HysTableSelectionProps, HysTableSelectionColumn, HysTableFilterConfirmOptions, HysTableFilterResetOptions, HysTableScrollRowOptions, HysTableKey, HysTableDirection, HysTableFilterValue, HysTableFilters, HysTableSort, HysTableFilter, HysTableCellContext, HysTableColumn, HysTableElementAttrs, HysTablePaginationPosition, HysTablePagination, HysTableQuery, HysTableLoadContext, HysTableLocale, HysTableProps, HysTableInstance } from './composables/table';
151
+ export type { HysTableSelectionProps, HysTableSelectionColumn, HysTableRowSelectionOptions, HysTableSelectionAction, HysTableFilterConfirmOptions, HysTableFilterResetOptions, HysTableFilterDropdownContext, HysTableScrollRowOptions, HysTableStickyOptions, HysTableOverflowTooltipOptions, HysTableComponents, HysTableKey, HysTableDirection, HysTableFilterValue, HysTableFilters, HysTableSort, HysTableFilter, HysTableCellContext, HysTableColumn, HysTableElementAttrs, HysTablePaginationPosition, HysTablePagination, HysTableQuery, HysTableLoadContext, HysTableLocale, HysTableProps, HysTableInstance } from './composables/table';
117
152
  export type { HysTransferKey, HysTransferSide, HysTransferOption, HysTransferFieldNames, HysTransferPagination, HysTransferLocale, HysTransferHeaderInfo, HysTransferProps, HysTransferPanelContext, HysTransferInstance, HysTransferSlots } from './composables/transfer';
118
153
  export type { TreeNode, HysTreeKey, HysTreeValue, HysTreeNode, HysTreeFieldNames, HysTreeLoadContext, HysTreeLocale, HysTreeRecord, HysTreeCheckInfo, HysTreeSelectInfo, HysTreeDropPosition, HysTreeDropInfo, HysTreeNodeContext, HysTreeProps, HysTreeInstance } from './composables/tree';
119
154
  export type { HysTreeSelectNode, HysTreeSelectDataNode, HysTreeSelectLabelValue, HysTreeSelectValue, HysTreeSelectFieldNames, HysTreeSelectSimpleMode, HysTreeSelectStrategy, HysTreeSelectItem, HysTreeSelectChange, HysTreeSelectProps, HysTreeSelectInstance } from './composables/treeSelect';