hys-ui 0.3.0 → 0.5.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.
- package/CHANGELOG.md +27 -0
- package/README.md +68 -73
- package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +5 -41
- package/dist/components/HysAnimatedNumber/HysAnimatedNumber2.vue.js +467 -2
- package/dist/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas.vue.js +7 -0
- package/dist/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas2.vue.js +166 -0
- package/dist/components/HysAnimatedNumber/NumberDigits/NumberDigits.vue.js +7 -0
- package/dist/components/HysAnimatedNumber/NumberDigits/NumberDigits2.vue.js +105 -0
- package/dist/components/HysAnimatedNumber/animation/digital.js +186 -0
- package/dist/components/HysAnimatedNumber/animation/morph.js +110 -0
- package/dist/components/HysAnimatedNumber/animation/paint.js +34 -0
- package/dist/components/HysAnimatedNumber/animation/particles.js +51 -0
- package/dist/components/HysAnimatedNumber/animation/paths.js +165 -0
- package/dist/components/HysAnimatedNumber/animation/physics.js +66 -0
- package/dist/components/HysAnimatedNumber/animation/render.js +89 -0
- package/dist/components/HysAnimatedNumber/animation/reveal.js +125 -0
- package/dist/components/HysAnimatedNumber/animation/rolling.js +66 -0
- package/dist/components/HysAnimatedNumber/animation/scenarios.js +217 -0
- package/dist/components/HysAnimatedNumber/animation/spatial.js +112 -0
- package/dist/components/HysAnimatedNumber/useNumberCountdown.js +58 -0
- package/dist/components/HysAnimatedNumber/useNumberVisuals.js +60 -0
- package/dist/components/HysButton/HysButton.vue.js +2 -2
- package/dist/components/HysButton/HysButton2.vue.js +227 -60
- package/dist/components/HysButtonGroup/HysButtonGroup.vue.js +7 -0
- package/dist/components/HysButtonGroup/HysButtonGroup2.vue.js +51 -0
- package/dist/components/HysFormItem/HysFormItem.vue.js +1 -1
- package/dist/components/HysFormItem/HysFormItem2.vue.js +231 -229
- package/dist/components/HysInput/HysInput.vue.js +2 -2
- package/dist/components/HysInput/HysInput2.vue.js +327 -274
- package/dist/components/HysMention/HysMention.vue.js +1 -1
- package/dist/components/HysMention/HysMention2.vue.js +1092 -154
- package/dist/components/HysModal/HysModal.vue.js +3 -3
- package/dist/components/HysModal/HysModal2.vue.js +81 -80
- package/dist/components/HysPagination/HysPagination.vue.js +2 -2
- package/dist/components/HysPagination/HysPagination2.vue.js +243 -180
- package/dist/components/HysSearch/HysSearch.vue.js +5 -82
- package/dist/components/HysSearch/HysSearch2.vue.js +176 -2
- package/dist/components/HysSelect/HysSelect.vue.js +2 -2
- package/dist/components/HysSelect/HysSelect2.vue.js +472 -443
- package/dist/components/HysSplitPane/HysSplitPane.vue.js +315 -58
- package/dist/components/HysSplitPane/HysSplitPane3.vue.js +5 -0
- package/dist/components/HysTable/HysTable.vue.js +2 -2
- package/dist/components/HysTable/HysTable2.vue.js +1418 -1150
- package/dist/components/HysTextarea/HysTextarea.vue.js +56 -32
- package/dist/components/HysTour/HysTour.vue.js +291 -67
- package/dist/components/HysTour/HysTour3.vue.js +5 -0
- package/dist/composables/animatedNumberDigits.js +106 -0
- package/dist/composables/animatedNumberFormat.js +222 -0
- package/dist/composables/animatedNumberTiming.js +66 -0
- package/dist/composables/buttonGroup.js +12 -0
- package/dist/composables/floatingPosition.js +18 -0
- package/dist/composables/mentionDocument.js +79 -0
- package/dist/composables/mentionEditor.js +58 -0
- package/dist/composables/numberAnimation.js +72 -0
- package/dist/composables/numberAnimationCatalog.js +301 -0
- package/dist/composables/numberAnimationSequence.js +45 -0
- package/dist/composables/selectOptions.js +44 -38
- package/dist/composables/splitPaneSizes.js +58 -0
- package/dist/composables/table.js +128 -105
- package/dist/composables/textInput.js +23 -14
- package/dist/composables/useDialog.js +50 -50
- package/dist/composables/useFloating.js +107 -103
- package/dist/composables/useHysAnimatedNumber.js +264 -0
- package/dist/composables/useHysNumberAnimationGroup.js +23 -0
- package/dist/composables/useMentionCaret.js +81 -0
- package/dist/composables/useMentionList.js +81 -0
- package/dist/composables/useMentionModel.js +90 -0
- package/dist/composables/useMentionOptions.js +421 -0
- package/dist/composables/useSplitPaneDrag.js +52 -0
- package/dist/composables/useSplitPaneStorage.js +38 -0
- package/dist/composables/useTable.js +344 -312
- package/dist/composables/useTableSticky.js +79 -0
- package/dist/composables/useTextareaSize.js +62 -46
- package/dist/composables/useTourLayout.js +129 -0
- package/dist/config.js +11 -11
- package/dist/index.js +183 -152
- package/dist/internal/MultiSplitPane.vue.js +305 -0
- package/dist/internal/MultiSplitPane2.vue.js +4 -0
- package/dist/style.css +1 -1
- package/dist/types/components/HysAnimatedNumber/HysAnimatedNumber.vue.d.ts +99 -6
- package/dist/types/components/HysAnimatedNumber/NumberAnimationCanvas/NumberAnimationCanvas.vue.d.ts +19 -0
- package/dist/types/components/HysAnimatedNumber/NumberDigits/NumberDigits.vue.d.ts +31 -0
- package/dist/types/components/HysAnimatedNumber/animation/digital.d.ts +3 -0
- package/dist/types/components/HysAnimatedNumber/animation/morph.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/animation/paint.d.ts +44 -0
- package/dist/types/components/HysAnimatedNumber/animation/particles.d.ts +5 -0
- package/dist/types/components/HysAnimatedNumber/animation/paths.d.ts +12 -0
- package/dist/types/components/HysAnimatedNumber/animation/physics.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/animation/render.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/animation/reveal.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/animation/rolling.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/animation/scenarios.d.ts +4 -0
- package/dist/types/components/HysAnimatedNumber/animation/spatial.d.ts +2 -0
- package/dist/types/components/HysAnimatedNumber/useNumberCountdown.d.ts +8 -0
- package/dist/types/components/HysAnimatedNumber/useNumberVisuals.d.ts +12 -0
- package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +12 -3
- package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +2 -2
- package/dist/types/components/HysButton/HysButton.vue.d.ts +82 -22
- package/dist/types/components/HysButtonGroup/HysButtonGroup.vue.d.ts +30 -0
- package/dist/types/components/HysCard/HysCard.vue.d.ts +1 -1
- package/dist/types/components/HysCascader/HysCascader.vue.d.ts +3 -3
- package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +3 -3
- package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +3 -3
- package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +2 -2
- package/dist/types/components/HysDatePicker/HysDatePicker.vue.d.ts +3 -3
- package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +6 -6
- package/dist/types/components/HysDateRangePicker/HysDateRangePicker.vue.d.ts +3 -3
- package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +2 -2
- package/dist/types/components/HysFormItem/HysFormItem.vue.d.ts +1 -1
- package/dist/types/components/HysInput/HysInput.vue.d.ts +13 -1
- package/dist/types/components/HysMention/HysMention.vue.d.ts +91 -40
- package/dist/types/components/HysModal/HysModal.vue.d.ts +1 -1
- package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +2 -2
- package/dist/types/components/HysPagination/HysPagination.vue.d.ts +55 -4
- package/dist/types/components/HysPopover/HysPopover.vue.d.ts +1 -1
- package/dist/types/components/HysRating/HysRating.vue.d.ts +1 -1
- package/dist/types/components/HysSearch/HysSearch.vue.d.ts +46 -8
- package/dist/types/components/HysSelect/HysSelect.vue.d.ts +6 -1
- package/dist/types/components/HysSkeleton/HysSkeleton.vue.d.ts +2 -2
- package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +125 -14
- package/dist/types/components/HysSteps/HysSteps.vue.d.ts +1 -1
- package/dist/types/components/HysTable/HysTable.vue.d.ts +1740 -3
- package/dist/types/components/HysTabs/HysTabs.vue.d.ts +1 -1
- package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +1 -1
- package/dist/types/components/HysTextarea/HysTextarea.vue.d.ts +13 -2
- package/dist/types/components/HysToast/HysToast.vue.d.ts +1 -1
- package/dist/types/components/HysTooltip/HysTooltip.vue.d.ts +1 -1
- package/dist/types/components/HysTour/HysTour.vue.d.ts +46 -9
- package/dist/types/components/HysTreeSelect/HysTreeSelect.vue.d.ts +3 -3
- package/dist/types/components/HysUpload/HysUpload.vue.d.ts +2 -2
- package/dist/types/composables/animatedNumber.d.ts +220 -0
- package/dist/types/composables/animatedNumberDigits.d.ts +32 -0
- package/dist/types/composables/animatedNumberFormat.d.ts +16 -0
- package/dist/types/composables/animatedNumberTiming.d.ts +21 -0
- package/dist/types/composables/buttonGroup.d.ts +9 -0
- package/dist/types/composables/drawer.d.ts +1 -1
- package/dist/types/composables/floatingPosition.d.ts +14 -0
- package/dist/types/composables/mention.d.ts +284 -0
- package/dist/types/composables/mentionDocument.d.ts +15 -0
- package/dist/types/composables/mentionEditor.d.ts +7 -0
- package/dist/types/composables/modal.d.ts +2 -0
- package/dist/types/composables/numberAnimation.d.ts +29 -0
- package/dist/types/composables/numberAnimationCatalog.d.ts +58 -0
- package/dist/types/composables/numberAnimationSequence.d.ts +13 -0
- package/dist/types/composables/selectOptions.d.ts +5 -0
- package/dist/types/composables/splitPaneSizes.d.ts +11 -0
- package/dist/types/composables/table.d.ts +116 -6
- package/dist/types/composables/textInput.d.ts +39 -4
- package/dist/types/composables/tour.d.ts +68 -0
- package/dist/types/composables/useFloating.d.ts +1 -1
- package/dist/types/composables/useHysAnimatedNumber.d.ts +37 -0
- package/dist/types/composables/useHysNumberAnimationGroup.d.ts +4 -0
- package/dist/types/composables/useMentionCaret.d.ts +6 -0
- package/dist/types/composables/useMentionList.d.ts +23 -0
- package/dist/types/composables/useMentionModel.d.ts +14 -0
- package/dist/types/composables/useMentionOptions.d.ts +26 -0
- package/dist/types/composables/useSplitPaneDrag.d.ts +14 -0
- package/dist/types/composables/useSplitPaneStorage.d.ts +4 -0
- package/dist/types/composables/useTable.d.ts +7 -3
- package/dist/types/composables/useTableSticky.d.ts +22 -0
- package/dist/types/composables/useTextareaSize.d.ts +5 -2
- package/dist/types/composables/useTourLayout.d.ts +33 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/index.d.ts +46 -1
- package/dist/types/internal/MultiSplitPane.vue.d.ts +54 -0
- package/package.json +3 -2
- package/dist/components/HysSplitPane/HysSplitPane2.vue.js +0 -4
- 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
|
-
|
|
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
|
-
|
|
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,
|
|
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;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Component, InputHTMLAttributes, TextareaHTMLAttributes } from "vue";
|
|
1
|
+
import type { Component, InputHTMLAttributes, StyleValue, TextareaHTMLAttributes } from "vue";
|
|
2
2
|
export interface HysInputFormatInfo {
|
|
3
3
|
userTyping: boolean;
|
|
4
4
|
input: string;
|
|
@@ -9,8 +9,20 @@ export interface HysInputCountInfo {
|
|
|
9
9
|
maxLength?: number;
|
|
10
10
|
}
|
|
11
11
|
export type HysInputCountStrategy = boolean | ((value: string) => number);
|
|
12
|
+
export type HysInputSize = "sm" | "md" | "lg" | "small" | "middle" | "default" | "large";
|
|
13
|
+
export interface HysInputModelModifiers {
|
|
14
|
+
lazy?: boolean;
|
|
15
|
+
trim?: boolean;
|
|
16
|
+
number?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface HysTextareaStyle {
|
|
19
|
+
height?: string;
|
|
20
|
+
overflowY?: "auto" | "hidden";
|
|
21
|
+
}
|
|
12
22
|
export interface HysInputProps {
|
|
13
23
|
modelValue?: string | number | null;
|
|
24
|
+
/** Vue v-model 修饰符。lazy 延后写入模型,trim 去首尾空白,number 由 Vue 转换数值。 */
|
|
25
|
+
modelModifiers?: HysInputModelModifiers;
|
|
14
26
|
defaultValue?: string | number | null;
|
|
15
27
|
placeholder?: string;
|
|
16
28
|
type?: string;
|
|
@@ -21,6 +33,12 @@ export interface HysInputProps {
|
|
|
21
33
|
error?: string;
|
|
22
34
|
status?: "error" | "warning" | "success";
|
|
23
35
|
clearable?: boolean;
|
|
36
|
+
/** 清空开关别名,clearable 显式设置时优先。 */
|
|
37
|
+
allowClear?: boolean;
|
|
38
|
+
/** 输入框外侧的附加文字,prepend 插槽优先。 */
|
|
39
|
+
addonBefore?: string;
|
|
40
|
+
/** 输入框外侧的附加文字,append 插槽优先。 */
|
|
41
|
+
addonAfter?: string;
|
|
24
42
|
clearIcon?: Component;
|
|
25
43
|
prefixIcon?: Component;
|
|
26
44
|
suffixIcon?: Component;
|
|
@@ -42,7 +60,7 @@ export interface HysInputProps {
|
|
|
42
60
|
allowInput?: (value: string) => boolean;
|
|
43
61
|
autocomplete?: string;
|
|
44
62
|
name?: string;
|
|
45
|
-
size?:
|
|
63
|
+
size?: HysInputSize;
|
|
46
64
|
rows?: number;
|
|
47
65
|
autosize?: boolean | {
|
|
48
66
|
minRows?: number;
|
|
@@ -50,27 +68,44 @@ export interface HysInputProps {
|
|
|
50
68
|
};
|
|
51
69
|
resize?: "none" | "both" | "horizontal" | "vertical";
|
|
52
70
|
inputProps?: InputHTMLAttributes | TextareaHTMLAttributes;
|
|
71
|
+
/** 应用到原生输入元素的样式。自动高度启用时由组件管理 height 和 overflowY。 */
|
|
72
|
+
inputStyle?: StyleValue;
|
|
73
|
+
/** 原生 inputmode,用于提示移动端键盘布局。 */
|
|
74
|
+
inputmode?: InputHTMLAttributes["inputmode"];
|
|
75
|
+
/** 原生控件的 Tab 顺序。 */
|
|
76
|
+
tabindex?: string | number;
|
|
77
|
+
/** 关联的原生 form 元素 ID,可提交在表单外的输入。 */
|
|
78
|
+
form?: string;
|
|
79
|
+
/** 是否由组件交互触发表单的 change、blur 校验,默认 true。 */
|
|
80
|
+
validateEvent?: boolean;
|
|
53
81
|
autofocus?: boolean;
|
|
54
82
|
selectOnFocus?: boolean;
|
|
55
83
|
bordered?: boolean;
|
|
56
84
|
round?: boolean;
|
|
57
85
|
}
|
|
58
86
|
export interface HysInputInstance {
|
|
87
|
+
element: HTMLInputElement | HTMLTextAreaElement | undefined;
|
|
59
88
|
input: HTMLInputElement | HTMLTextAreaElement | undefined;
|
|
60
89
|
textarea: HTMLTextAreaElement | undefined;
|
|
61
90
|
isComposing: boolean;
|
|
91
|
+
passwordVisible: boolean;
|
|
92
|
+
textareaStyle: HysTextareaStyle;
|
|
62
93
|
focus: (options?: FocusOptions) => void;
|
|
63
94
|
blur: () => void;
|
|
64
95
|
select: () => void;
|
|
65
96
|
clear: () => void;
|
|
66
97
|
resize: () => Promise<void>;
|
|
98
|
+
resizeTextarea: () => Promise<void>;
|
|
67
99
|
setSelectionRange: (start: number, end: number, direction?: "forward" | "backward" | "none") => void;
|
|
68
100
|
scrollTo: (options: ScrollToOptions) => void;
|
|
69
101
|
}
|
|
70
|
-
export type HysTextareaProps = Omit<HysInputProps,
|
|
71
|
-
export interface HysTextareaInstance extends Omit<HysInputInstance,
|
|
102
|
+
export type HysTextareaProps = Omit<HysInputProps, "type" | "showPassword" | "showPasswordOn" | "passwordVisible" | "defaultPasswordVisible">;
|
|
103
|
+
export interface HysTextareaInstance extends Omit<HysInputInstance, "input" | "element" | "passwordVisible"> {
|
|
72
104
|
input: HTMLTextAreaElement | undefined;
|
|
105
|
+
element: HTMLTextAreaElement | undefined;
|
|
73
106
|
}
|
|
107
|
+
export declare function textInputSize(size?: HysInputSize): "sm" | "md" | "lg" | undefined;
|
|
108
|
+
export declare function modelText(value: string, modifiers?: HysInputModelModifiers): string;
|
|
74
109
|
export declare function textCount(value: string, strategy?: HysInputCountStrategy): number;
|
|
75
110
|
export declare function textLimit(value: string, max: number | undefined, strategy?: HysInputCountStrategy): string;
|
|
76
111
|
export declare function textLengthLimit(value?: string | number): number | undefined;
|
|
@@ -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,37 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter } from "vue";
|
|
2
|
+
import type { HysNumberComposableOptions, HysNumberEvent, HysNumberFrame, HysNumberValue } from "./animatedNumber";
|
|
3
|
+
/** 在 Vue setup 中使用。与 HysAnimatedNumber 共享调度和播放控制。 */
|
|
4
|
+
export declare function useHysAnimatedNumber(source?: MaybeRefOrGetter<HysNumberComposableOptions>, onEvent?: (event: HysNumberEvent, frame: HysNumberFrame) => void): {
|
|
5
|
+
frame: Readonly<import("vue").Ref<{
|
|
6
|
+
readonly value: HysNumberValue;
|
|
7
|
+
readonly from: HysNumberValue;
|
|
8
|
+
readonly to: HysNumberValue;
|
|
9
|
+
readonly progress: number;
|
|
10
|
+
readonly easedProgress: number;
|
|
11
|
+
readonly direction: import("./animatedNumber").HysNumberDirection;
|
|
12
|
+
readonly status: import("./animatedNumber").HysNumberStatus;
|
|
13
|
+
readonly iteration: number;
|
|
14
|
+
}, {
|
|
15
|
+
readonly value: HysNumberValue;
|
|
16
|
+
readonly from: HysNumberValue;
|
|
17
|
+
readonly to: HysNumberValue;
|
|
18
|
+
readonly progress: number;
|
|
19
|
+
readonly easedProgress: number;
|
|
20
|
+
readonly direction: import("./animatedNumber").HysNumberDirection;
|
|
21
|
+
readonly status: import("./animatedNumber").HysNumberStatus;
|
|
22
|
+
readonly iteration: number;
|
|
23
|
+
}>>;
|
|
24
|
+
motionEnabled: import("vue").ComputedRef<boolean>;
|
|
25
|
+
play: () => void;
|
|
26
|
+
pause: () => void;
|
|
27
|
+
resume: () => void;
|
|
28
|
+
stop: () => void;
|
|
29
|
+
restart: () => void;
|
|
30
|
+
reset: () => void;
|
|
31
|
+
reverse: () => void;
|
|
32
|
+
seek: (progress: number) => void;
|
|
33
|
+
finishAnimation: () => void;
|
|
34
|
+
updateTarget: (next: HysNumberValue) => void;
|
|
35
|
+
sync: () => void;
|
|
36
|
+
hold: (value: boolean) => void;
|
|
37
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter } from "vue";
|
|
2
|
+
import type { HysNumberControls } from "./animatedNumber";
|
|
3
|
+
/** 同时控制组件实例和独立动画。空实例会被跳过。 */
|
|
4
|
+
export declare function useHysNumberAnimationGroup(source: MaybeRefOrGetter<readonly (HysNumberControls | null | undefined)[]>): HysNumberControls;
|
|
@@ -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
|
-
|
|
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,
|
|
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
|
+
};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { type Ref } from "vue";
|
|
2
|
-
import type { HysInputProps } from "./textInput";
|
|
3
|
-
export declare function useTextareaSize(input: Ref<HTMLInputElement | HTMLTextAreaElement | undefined>, props: HysInputProps, size: Ref<string>, value: Ref<string>):
|
|
2
|
+
import type { HysInputProps, HysTextareaStyle } from "./textInput";
|
|
3
|
+
export declare function useTextareaSize(input: Ref<HTMLInputElement | HTMLTextAreaElement | undefined>, props: HysInputProps, size: Ref<string>, value: Ref<string>): {
|
|
4
|
+
resize: () => Promise<void>;
|
|
5
|
+
textareaStyle: import("vue").ShallowRef<HysTextareaStyle, HysTextareaStyle>;
|
|
6
|
+
};
|