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,11 +1,65 @@
1
- type __VLS_Props = {
2
- value: number;
1
+ import type { StyleValue, VNodeChild } from "vue";
2
+ export interface HysAnimatedNumberContext {
3
+ value: number | string;
4
+ displayValue: string;
5
+ remaining?: number;
6
+ }
7
+ export interface HysAnimatedNumberProps {
8
+ value?: number | string;
3
9
  duration?: number;
4
10
  decimals?: number;
5
- };
6
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
7
- duration: number;
8
- decimals: number;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ precision?: number;
12
+ groupSeparator?: string;
13
+ decimalSeparator?: string;
14
+ title?: string;
15
+ prefix?: string;
16
+ suffix?: string;
17
+ valueStyle?: StyleValue;
18
+ formatter?: (context: HysAnimatedNumberContext) => VNodeChild;
19
+ /** 倒计时截止时间,可传 Unix 毫秒时间戳或 Date。 */
20
+ deadline?: number | Date;
21
+ /** 支持 D、HH、mm、ss、SSS 等标记,用方括号包裹字面文本。 */
22
+ format?: string;
23
+ }
10
24
  declare const _default: typeof __VLS_export;
11
25
  export default _default;
26
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<HysAnimatedNumberProps, {
27
+ displayValue: import("vue").ComputedRef<string>;
28
+ remaining: import("vue").Ref<number, number>;
29
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
+ change: (remaining: number) => any;
31
+ finish: () => any;
32
+ }, string, import("vue").PublicProps, Readonly<HysAnimatedNumberProps> & Readonly<{
33
+ onChange?: ((remaining: number) => any) | undefined;
34
+ onFinish?: (() => any) | undefined;
35
+ }>, {
36
+ value: string | number;
37
+ format: string;
38
+ duration: number;
39
+ decimalSeparator: string;
40
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
41
+ title?: (props: {}) => any;
42
+ } & {
43
+ prefix?: (props: {
44
+ value: number | string;
45
+ displayValue: string;
46
+ remaining?: number;
47
+ }) => any;
48
+ } & {
49
+ formatter?: (props: {
50
+ value: number | string;
51
+ displayValue: string;
52
+ remaining?: number;
53
+ }) => any;
54
+ } & {
55
+ suffix?: (props: {
56
+ value: number | string;
57
+ displayValue: string;
58
+ remaining?: number;
59
+ }) => any;
60
+ }>;
61
+ type __VLS_WithSlots<T, S> = T & {
62
+ new (): {
63
+ $slots: S;
64
+ };
65
+ };
@@ -35,6 +35,7 @@ declare const __VLS_template: () => {
35
35
  "aria-busy": true | undefined;
36
36
  type?: string;
37
37
  autofocus?: boolean;
38
+ formatter?: (value: string, info: import("../..").HysInputFormatInfo) => string;
38
39
  resize?: "none" | "both" | "horizontal" | "vertical";
39
40
  showPassword?: boolean;
40
41
  showPasswordOn?: "click" | "mousedown";
@@ -51,7 +52,6 @@ declare const __VLS_template: () => {
51
52
  countGraphemes?: import("../..").HysInputCountStrategy;
52
53
  maxlength?: number | string;
53
54
  minlength?: number | string;
54
- formatter?: (value: string, info: import("../..").HysInputFormatInfo) => string;
55
55
  parser?: (value: string) => string | number;
56
56
  allowInput?: (value: string) => boolean;
57
57
  rows?: number;
@@ -1,19 +1,70 @@
1
- import { type Component } from 'vue';
2
- export type HysButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning' | 'info' | 'text' | 'link';
1
+ import { type Component, type VNode } from 'vue';
2
+ export type HysButtonPaletteColor = 'slate' | 'blue' | 'indigo' | 'purple' | 'cyan' | 'teal' | 'green' | 'lime' | 'amber' | 'orange' | 'red' | 'pink';
3
+ export type HysButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning' | 'info' | 'text' | 'link' | HysButtonPaletteColor;
4
+ export type HysButtonAppearance = HysButtonVariant | 'default' | '';
5
+ export type HysButtonSize = 'sm' | 'md' | 'lg' | 'small' | 'default' | 'large' | '';
6
+ export interface HysButtonActionContext {
7
+ signal: AbortSignal;
8
+ event: MouseEvent;
9
+ pressed: boolean;
10
+ }
11
+ export type HysButtonAction = (context: HysButtonActionContext) => unknown;
12
+ export type HysButtonActionGuard = (context: HysButtonActionContext) => boolean | void | Promise<boolean | void>;
13
+ export interface HysButtonInstance {
14
+ readonly element?: HTMLElement;
15
+ readonly ref?: HTMLElement;
16
+ readonly busy: boolean;
17
+ readonly disabled: boolean;
18
+ readonly size: 'sm' | 'md' | 'lg';
19
+ readonly type: HysButtonVariant;
20
+ readonly shouldAddSpace: boolean;
21
+ focus: () => void;
22
+ blur: () => void;
23
+ cancelAction: () => void;
24
+ }
3
25
  export interface HysButtonProps {
26
+ /** 语义外观或内置配色,例如 teal、indigo 和 amber。 */
4
27
  variant?: HysButtonVariant;
5
- size?: 'sm' | 'md' | 'lg';
28
+ size?: HysButtonSize;
6
29
  disabled?: boolean;
7
- loading?: boolean;
30
+ /** 延迟显示加载图标时,按钮仍会立即阻止重复操作。 */
31
+ loading?: boolean | {
32
+ delay: number;
33
+ };
34
+ loadingIcon?: string | Component;
35
+ loadingText?: string;
36
+ /** 执行期间锁定按钮并接管默认点击行为,组件停用或销毁时取消。 */
37
+ action?: HysButtonAction;
38
+ /** 返回 false 时取消操作,支持异步检查。 */
39
+ beforeAction?: HysButtonActionGuard;
40
+ actionLoadingDelay?: number;
41
+ toggle?: boolean;
42
+ /** 受控按下状态,配合 v-model:pressed 使用。 */
43
+ pressed?: boolean;
44
+ defaultPressed?: boolean;
8
45
  plain?: boolean;
9
46
  round?: boolean;
10
47
  circle?: boolean;
48
+ shape?: 'default' | 'round' | 'circle';
11
49
  block?: boolean;
12
50
  dashed?: boolean;
13
51
  color?: string;
14
- icon?: Component;
52
+ /** 使用深色背景下的配色计算。默认跟随当前主题。 */
53
+ dark?: boolean;
54
+ danger?: boolean;
55
+ ghost?: boolean;
56
+ text?: boolean;
57
+ link?: boolean;
58
+ /** 为文字按钮显示背景。 */
59
+ bg?: boolean;
60
+ /** 文案恰好是两个汉字时显示字间距。 */
61
+ autoInsertSpace?: boolean;
62
+ /** 自定义根标签或组件,href 默认使用原生链接。 */
63
+ tag?: string | Component;
64
+ icon?: string | Component;
15
65
  iconPosition?: 'left' | 'right';
16
- type?: 'button' | 'submit' | 'reset';
66
+ /** 外观类型,也兼容原有 button、submit、reset 原生类型。 */
67
+ type?: HysButtonAppearance | 'button' | 'submit' | 'reset';
17
68
  nativeType?: 'button' | 'submit' | 'reset';
18
69
  href?: string;
19
70
  target?: string;
@@ -22,32 +73,41 @@ export interface HysButtonProps {
22
73
  focusable?: boolean;
23
74
  ariaLabel?: string;
24
75
  }
25
- declare const __VLS_template: () => {
26
- __VLS_Slots: {
27
- loading?: (props: {}) => any;
28
- } & {
29
- icon?: (props: {}) => any;
30
- } & {
31
- default?: (props: {}) => any;
32
- } & {
33
- icon?: (props: {}) => any;
34
- } & {
35
- suffix?: (props: {}) => any;
36
- };
76
+ type __VLS_Slots = {
77
+ default?: () => VNode[];
78
+ icon?: () => VNode[];
79
+ loading?: () => VNode[];
80
+ suffix?: () => VNode[];
37
81
  };
38
- type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
82
+ declare function cancelAction(): void;
39
83
  declare const __VLS_base: import("vue").DefineComponent<HysButtonProps, {
40
- element: import("vue").Ref<HTMLButtonElement | HTMLAnchorElement | undefined, HTMLButtonElement | HTMLAnchorElement | undefined>;
84
+ element: import("vue").ComputedRef<HTMLElement | undefined>;
85
+ ref: import("vue").ComputedRef<HTMLElement | undefined>;
86
+ busy: import("vue").ComputedRef<boolean>;
87
+ disabled: import("vue").ComputedRef<boolean>;
88
+ size: import("vue").ComputedRef<"sm" | "md" | "lg">;
89
+ type: import("vue").ComputedRef<HysButtonVariant>;
90
+ shouldAddSpace: import("vue").Ref<boolean, boolean>;
91
+ cancelAction: typeof cancelAction;
41
92
  focus: () => void | undefined;
42
93
  blur: () => void | undefined;
43
94
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
95
  click: (event: MouseEvent) => any;
96
+ "update:pressed": (value: boolean) => any;
97
+ pressedChange: (value: boolean) => any;
98
+ actionSuccess: (result: unknown, context: HysButtonActionContext) => any;
99
+ actionError: (error: unknown, context: HysButtonActionContext) => any;
45
100
  }, string, import("vue").PublicProps, Readonly<HysButtonProps> & Readonly<{
46
101
  onClick?: ((event: MouseEvent) => any) | undefined;
102
+ "onUpdate:pressed"?: ((value: boolean) => any) | undefined;
103
+ onPressedChange?: ((value: boolean) => any) | undefined;
104
+ onActionSuccess?: ((result: unknown, context: HysButtonActionContext) => any) | undefined;
105
+ onActionError?: ((error: unknown, context: HysButtonActionContext) => any) | undefined;
47
106
  }>, {
48
- type: "button" | "submit" | "reset";
107
+ dark: boolean;
49
108
  focusable: boolean;
50
- variant: HysButtonVariant;
109
+ pressed: boolean;
110
+ autoInsertSpace: boolean;
51
111
  iconPosition: "left" | "right";
52
112
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
53
113
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -0,0 +1,30 @@
1
+ import { type VNodeChild } from "vue";
2
+ import type { HysButtonAppearance, HysButtonSize, HysButtonVariant } from "../HysButton/HysButton.vue";
3
+ export interface HysButtonGroupProps {
4
+ variant?: HysButtonVariant;
5
+ size?: HysButtonSize;
6
+ type?: HysButtonAppearance;
7
+ direction?: "horizontal" | "vertical";
8
+ joined?: boolean;
9
+ gap?: number | string;
10
+ wrap?: boolean;
11
+ block?: boolean;
12
+ disabled?: boolean;
13
+ ariaLabel?: string;
14
+ }
15
+ type __VLS_Slots = {
16
+ default?: () => VNodeChild;
17
+ };
18
+ declare const __VLS_base: import("vue").DefineComponent<HysButtonGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HysButtonGroupProps> & Readonly<{}>, {
19
+ direction: "horizontal" | "vertical";
20
+ gap: string | number;
21
+ joined: boolean;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -22,11 +22,11 @@ declare const __VLS_export: <N extends object>(__VLS_props: NonNullable<Awaited<
22
22
  retryText: string;
23
23
  expandLabel: (entry: CascaderEntry<N>) => string;
24
24
  } & {
25
+ onKeyboard?: ((event: KeyboardEvent, entry: CascaderEntry<N>, level: number) => any) | undefined;
25
26
  onScroll?: ((event: Event) => any) | undefined;
26
27
  onRetry?: ((entry: CascaderEntry<N>) => any) | undefined;
27
28
  onHover?: ((entry: CascaderEntry<N> | null) => any) | undefined;
28
29
  onChoose?: ((entry: CascaderEntry<N>, event?: Event | undefined, checked?: boolean | undefined) => any) | undefined;
29
- onKeyboard?: ((event: KeyboardEvent, entry: CascaderEntry<N>, level: number) => any) | undefined;
30
30
  onExpand?: ((entry: CascaderEntry<N>) => any) | undefined;
31
31
  }> & (typeof globalThis extends {
32
32
  __VLS_PROPS_FALLBACK: infer P;
@@ -42,7 +42,7 @@ declare const __VLS_export: <N extends object>(__VLS_props: NonNullable<Awaited<
42
42
  "expand-icon"?: (scope: HysCascaderOptionContext<N>) => any;
43
43
  loading?: (scope: HysCascaderOptionContext<N>) => any;
44
44
  };
45
- emit: ((evt: "scroll", event: Event) => void) & ((evt: "retry", entry: CascaderEntry<N>) => void) & ((evt: "hover", entry: CascaderEntry<N> | null) => void) & ((evt: "choose", entry: CascaderEntry<N>, event?: Event | undefined, checked?: boolean | undefined) => void) & ((evt: "keyboard", event: KeyboardEvent, entry: CascaderEntry<N>, level: number) => void) & ((evt: "expand", entry: CascaderEntry<N>) => void);
45
+ emit: ((evt: "keyboard", event: KeyboardEvent, entry: CascaderEntry<N>, level: number) => void) & ((evt: "scroll", event: Event) => void) & ((evt: "retry", entry: CascaderEntry<N>) => void) & ((evt: "hover", entry: CascaderEntry<N> | null) => void) & ((evt: "choose", entry: CascaderEntry<N>, event?: Event | undefined, checked?: boolean | undefined) => void) & ((evt: "expand", entry: CascaderEntry<N>) => void);
46
46
  }>) => import("vue").VNode & {
47
47
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
48
48
  };
@@ -52,10 +52,10 @@ declare const __VLS_base: import("vue").DefineComponent<HysColorPickerProps, {
52
52
  open: boolean;
53
53
  popupWidth: string | number;
54
54
  appendTo: string | false | HTMLElement;
55
- showFooter: boolean;
56
- validateEvent: boolean;
57
55
  showInput: boolean;
58
56
  showPresets: boolean;
57
+ showFooter: boolean;
58
+ validateEvent: boolean;
59
59
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
60
60
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
61
61
  declare const _default: typeof __VLS_export;
@@ -16,11 +16,11 @@ declare const __VLS_export: <N extends object>(__VLS_props: NonNullable<Awaited<
16
16
  context: (row: MenuRow<N>) => HysMenuItemContext<N>;
17
17
  tabbable: (row: MenuRow<N>) => number;
18
18
  } & {
19
+ onKeyboard?: ((event: KeyboardEvent) => any) | undefined;
19
20
  onScroll?: (() => any) | undefined;
20
21
  onChoose?: ((row: MenuRow<N>, event: MouseEvent) => any) | undefined;
21
22
  onFocusRow?: ((row: MenuRow<N>) => any) | undefined;
22
23
  onHoverRow?: ((row: MenuRow<N>) => any) | undefined;
23
- onKeyboard?: ((event: KeyboardEvent) => any) | undefined;
24
24
  onBack?: (() => any) | undefined;
25
25
  }> & (typeof globalThis extends {
26
26
  __VLS_PROPS_FALLBACK: infer P;
@@ -66,7 +66,7 @@ declare const __VLS_export: <N extends object>(__VLS_props: NonNullable<Awaited<
66
66
  } & {
67
67
  footer?: (props: {}) => any;
68
68
  };
69
- emit: ((evt: "scroll") => void) & ((evt: "choose", row: MenuRow<N>, event: MouseEvent) => void) & ((evt: "focusRow", row: MenuRow<N>) => void) & ((evt: "hoverRow", row: MenuRow<N>) => void) & ((evt: "keyboard", event: KeyboardEvent) => void) & ((evt: "back") => void);
69
+ emit: ((evt: "keyboard", event: KeyboardEvent) => void) & ((evt: "scroll") => void) & ((evt: "choose", row: MenuRow<N>, event: MouseEvent) => void) & ((evt: "focusRow", row: MenuRow<N>) => void) & ((evt: "hoverRow", row: MenuRow<N>) => void) & ((evt: "back") => void);
70
70
  }>) => import("vue").VNode & {
71
71
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
72
72
  };
@@ -63,12 +63,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
63
63
  clearable: boolean;
64
64
  open: boolean;
65
65
  appendTo: string | false | HTMLElement;
66
+ showFooter: boolean;
67
+ validateEvent: boolean;
66
68
  showToday: boolean;
67
69
  firstDayOfWeek: number;
68
70
  locale: string;
69
71
  showAdjacentDays: boolean;
70
- showFooter: boolean;
71
- validateEvent: boolean;
72
72
  editable: boolean;
73
73
  showNow: boolean;
74
74
  showConfirm: boolean;
@@ -77,9 +77,9 @@ declare const __VLS_base: import("vue").DefineComponent<HysDrawerProps, {
77
77
  open: boolean;
78
78
  appendTo: string | false | HTMLElement;
79
79
  loadingText: string;
80
+ cancelText: string;
80
81
  fullscreen: boolean;
81
82
  closeOnEscape: boolean;
82
- cancelText: string;
83
83
  closeOnMask: boolean;
84
84
  showClose: boolean;
85
85
  destroyOnClose: boolean;
@@ -1,50 +1,101 @@
1
- import type { HysPopupMotionProps } from '../../motion/popup';
2
- type __VLS_Props = HysPopupMotionProps & {
3
- users: {
4
- id: string;
5
- name: string;
6
- disabled?: boolean;
1
+ import type { HysMentionContext, HysMentionDocument, HysMentionEntity, HysMentionInsertOptions, HysMentionOpenOptions, HysMentionOption, HysMentionProps, HysMentionSlots, HysMentionUser } from "../../composables/mention";
2
+ type __VLS_Slots = HysMentionSlots;
3
+ declare function dismiss(): void;
4
+ declare function openManually(options?: HysMentionOpenOptions): boolean;
5
+ declare function insertMention(option: HysMentionOption, options?: HysMentionInsertOptions): Promise<boolean>;
6
+ declare function removeMention(target: HysMentionEntity | string | number): Promise<boolean>;
7
+ declare function focusInput(): void;
8
+ declare function clear(): Promise<boolean>;
9
+ declare function setDocument(document: HysMentionDocument | string): Promise<boolean>;
10
+ declare const __VLS_base: import("vue").DefineComponent<HysMentionProps, {
11
+ input: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
12
+ dropdownVisible: import("vue").Ref<boolean, boolean>;
13
+ focus: typeof focusInput;
14
+ blur: () => void | undefined;
15
+ open: typeof openManually;
16
+ close: typeof dismiss;
17
+ update: () => void;
18
+ retry: () => void;
19
+ loadMore: () => Promise<boolean>;
20
+ insertMention: typeof insertMention;
21
+ removeMention: typeof removeMention;
22
+ getEntities: () => {
23
+ id: string | number;
24
+ value: string | number;
25
+ label: string;
26
+ type: string;
27
+ prefix: string;
28
+ text: string;
29
+ start: number;
30
+ end: number;
31
+ payload?: unknown;
7
32
  }[];
8
- placeholder?: string;
9
- disabled?: boolean;
10
- readonly?: boolean;
11
- maxlength?: number;
12
- ariaLabel?: string;
13
- };
14
- type __VLS_ModelProps = {
15
- modelValue?: string;
16
- };
17
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
18
- declare const __VLS_template: () => {
19
- __VLS_Slots: {
20
- option?: (props: {
21
- user: {
22
- id: string;
23
- name: string;
24
- disabled?: boolean;
25
- };
26
- }) => any;
33
+ getDocument: () => {
34
+ text: string;
35
+ entities: {
36
+ id: string | number;
37
+ value: string | number;
38
+ label: string;
39
+ type: string;
40
+ prefix: string;
41
+ text: string;
42
+ start: number;
43
+ end: number;
44
+ payload?: unknown;
45
+ }[];
27
46
  };
28
- };
29
- type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
30
- declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
31
- focus: () => void | undefined;
32
- blur: () => void | undefined;
47
+ setDocument: typeof setDocument;
48
+ serialize: () => string;
49
+ clear: typeof clear;
50
+ undo: () => Promise<boolean>;
51
+ redo: () => Promise<boolean>;
33
52
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
34
53
  change: (value: string) => any;
35
54
  "update:modelValue": (value: string) => any;
36
- select: (user: {
37
- id: string;
38
- name: string;
39
- }) => any;
40
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
55
+ search: (query: string, prefix: string, context: HysMentionContext) => any;
56
+ clear: () => any;
57
+ select: (user: HysMentionUser, prefix: string, option: HysMentionOption) => any;
58
+ blur: (event: FocusEvent) => any;
59
+ focus: (event: FocusEvent) => any;
60
+ loadError: (error: unknown, context: HysMentionContext) => any;
61
+ create: (option: HysMentionOption, context: HysMentionContext) => any;
62
+ openChange: (open: boolean) => any;
63
+ "update:entities": (entities: HysMentionEntity[]) => any;
64
+ documentChange: (document: HysMentionDocument) => any;
65
+ entityAdd: (entity: HysMentionEntity) => any;
66
+ entityRemove: (entity: HysMentionEntity) => any;
67
+ wholeRemove: (value: string, prefix: string) => any;
68
+ }, string, import("vue").PublicProps, Readonly<HysMentionProps> & Readonly<{
41
69
  onChange?: ((value: string) => any) | undefined;
42
70
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
43
- onSelect?: ((user: {
44
- id: string;
45
- name: string;
46
- }) => any) | undefined;
47
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
71
+ onSearch?: ((query: string, prefix: string, context: HysMentionContext) => any) | undefined;
72
+ onClear?: (() => any) | undefined;
73
+ onSelect?: ((user: HysMentionUser, prefix: string, option: HysMentionOption) => any) | undefined;
74
+ onBlur?: ((event: FocusEvent) => any) | undefined;
75
+ onFocus?: ((event: FocusEvent) => any) | undefined;
76
+ onLoadError?: ((error: unknown, context: HysMentionContext) => any) | undefined;
77
+ onCreate?: ((option: HysMentionOption, context: HysMentionContext) => any) | undefined;
78
+ onOpenChange?: ((open: boolean) => any) | undefined;
79
+ "onUpdate:entities"?: ((entities: HysMentionEntity[]) => any) | undefined;
80
+ onDocumentChange?: ((document: HysMentionDocument) => any) | undefined;
81
+ onEntityAdd?: ((entity: HysMentionEntity) => any) | undefined;
82
+ onEntityRemove?: ((entity: HysMentionEntity) => any) | undefined;
83
+ onWholeRemove?: ((value: string, prefix: string) => any) | undefined;
84
+ }>, {
85
+ split: string;
86
+ type: "textarea" | "text" | "rich";
87
+ offset: number;
88
+ placement: import("../..").Placement;
89
+ defaultValue: string;
90
+ filterOption: import("../..").HysMentionFilter;
91
+ debounce: number;
92
+ minQueryLength: number;
93
+ appendTo: string | false | HTMLElement;
94
+ autoAdjustOverflow: boolean;
95
+ restoreFocus: boolean;
96
+ invalidEntity: "mark" | "text" | "remove";
97
+ maxOptions: number;
98
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
48
99
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
49
100
  declare const _default: typeof __VLS_export;
50
101
  export default _default;
@@ -89,9 +89,9 @@ declare const __VLS_base: import("vue").DefineComponent<HysModalProps, {
89
89
  open: boolean;
90
90
  appendTo: string | false | HTMLElement;
91
91
  loadingText: string;
92
+ cancelText: string;
92
93
  fullscreen: boolean;
93
94
  closeOnEscape: boolean;
94
- cancelText: string;
95
95
  initialFocus: import("../../index.js").HysModalInitialFocus;
96
96
  closeOnMask: boolean;
97
97
  showClose: boolean;
@@ -45,11 +45,11 @@ declare const __VLS_export: <T extends HysNumberInputValue = number | null>(__VL
45
45
  "onUpdate:modelValue"?: ((value: T) => any) | undefined;
46
46
  onClear?: (() => any) | undefined;
47
47
  onInput?: ((value: T | null) => any) | undefined;
48
+ onStep?: ((value: T, info: HysNumberInputStepInfo) => any) | undefined;
48
49
  onBlur?: ((event: FocusEvent) => any) | undefined;
49
50
  onFocus?: ((event: FocusEvent) => any) | undefined;
50
51
  onInvalid?: ((info: HysNumberInputInvalidInfo) => any) | undefined;
51
52
  onPressEnter?: ((event: KeyboardEvent) => any) | undefined;
52
- onStep?: ((value: T, info: HysNumberInputStepInfo) => any) | undefined;
53
53
  }> & (typeof globalThis extends {
54
54
  __VLS_PROPS_FALLBACK: infer P;
55
55
  } ? P : {});
@@ -83,7 +83,7 @@ declare const __VLS_export: <T extends HysNumberInputValue = number | null>(__VL
83
83
  } & {
84
84
  append?: (props: {}) => any;
85
85
  };
86
- emit: ((evt: "change", value: T) => void) & ((evt: "update:modelValue", value: T) => void) & ((evt: "clear") => void) & ((evt: "input", value: T | null) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "invalid", info: HysNumberInputInvalidInfo) => void) & ((evt: "pressEnter", event: KeyboardEvent) => void) & ((evt: "step", value: T, info: HysNumberInputStepInfo) => void);
86
+ emit: ((evt: "change", value: T) => void) & ((evt: "update:modelValue", value: T) => void) & ((evt: "clear") => void) & ((evt: "input", value: T | null) => void) & ((evt: "step", value: T, info: HysNumberInputStepInfo) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "invalid", info: HysNumberInputInvalidInfo) => void) & ((evt: "pressEnter", event: KeyboardEvent) => void);
87
87
  }>) => import("vue").VNode & {
88
88
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
89
89
  };
@@ -1,27 +1,68 @@
1
1
  type __VLS_Props = {
2
- page: number;
3
- total: number;
2
+ /** 受控页码,使用 v-model:page。省略时由分页器维护。 */
3
+ page?: number;
4
+ /** 总记录数,用于计算页数和当前记录范围。 */
5
+ total?: number;
6
+ /** 显式总页数;与 total 同时提供时优先用于分页。 */
7
+ pageCount?: number;
8
+ /** 受控每页条数,使用 v-model:page-size。省略时由分页器维护。 */
4
9
  pageSize?: number;
10
+ /** 非受控的初始页码,从 1 开始。 */
11
+ defaultPage?: number;
12
+ /** 非受控的初始每页条数。 */
13
+ defaultPageSize?: number;
14
+ /** 每页条数选项。当前条数会保留在列表中。 */
5
15
  pageSizeOptions?: number[];
16
+ /** 当前页左右各保留的页码数量,取值 0–5。 */
6
17
  siblingCount?: number;
7
18
  showSizeChanger?: boolean;
8
19
  showQuickJumper?: boolean;
20
+ /** 默认布局是否显示记录总数;需要 total 或 total 插槽。 */
9
21
  showTotal?: boolean;
22
+ /** 总页数小于等于一页时隐藏分页器。 */
23
+ hideOnSinglePage?: boolean;
10
24
  disabled?: boolean;
11
25
  loading?: boolean;
26
+ /** 以当前页 / 总页数代替页码,并隐藏跳转。 */
12
27
  compact?: boolean;
28
+ /** 在窄容器中以当前页 / 总页数代替页码。 */
29
+ responsive?: boolean;
30
+ /** 分页控件尺寸,sm、md、lg 分别为 28、32、40px。 */
31
+ size?: 'sm' | 'md' | 'lg';
32
+ /** 逗号分隔的控件顺序,支持 total、first、prev、pager、next、last、sizes、jumper。使用 -> 将后续控件靠右排列。 */
33
+ layout?: string;
34
+ /** 覆盖分页区域、按钮、字段标签和总数格式。 */
13
35
  labels?: Partial<{
14
36
  total: string;
15
37
  perPage: string;
16
38
  jump: string;
17
39
  page: string;
40
+ pageItem: string;
41
+ navigation: string;
42
+ confirm: string;
18
43
  first: string;
19
44
  previous: string;
20
45
  next: string;
21
46
  last: string;
22
47
  }>;
23
48
  };
24
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
+ type NavigationItem = 'first' | 'prev' | 'next' | 'last';
50
+ type __VLS_Slots = {
51
+ total?: (props: {
52
+ total: number | undefined;
53
+ start: number;
54
+ end: number;
55
+ pageCount: number;
56
+ }) => unknown;
57
+ item?: (props: {
58
+ type: NavigationItem | 'page';
59
+ page: number;
60
+ active: boolean;
61
+ disabled: boolean;
62
+ }) => unknown;
63
+ 'jump-button'?: () => unknown;
64
+ };
65
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
66
  change: (page: number) => any;
26
67
  "update:page": (page: number) => any;
27
68
  pageSizeChange: (size: number) => any;
@@ -33,13 +74,23 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
33
74
  "onUpdate:pageSize"?: ((size: number) => any) | undefined;
34
75
  }>, {
35
76
  disabled: boolean;
77
+ size: "sm" | "md" | "lg";
36
78
  compact: boolean;
37
79
  loading: boolean;
38
- pageSize: number;
80
+ defaultPage: number;
81
+ defaultPageSize: number;
39
82
  siblingCount: number;
40
83
  showSizeChanger: boolean;
41
84
  showQuickJumper: boolean;
42
85
  showTotal: boolean;
86
+ hideOnSinglePage: boolean;
87
+ responsive: boolean;
43
88
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
89
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
44
90
  declare const _default: typeof __VLS_export;
45
91
  export default _default;
92
+ type __VLS_WithSlots<T, S> = T & {
93
+ new (): {
94
+ $slots: S;
95
+ };
96
+ };
@@ -98,9 +98,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
98
98
  onHoverChange?: ((value: number | null) => any) | undefined;
99
99
  }>, {
100
100
  focusable: boolean;
101
+ keyboard: boolean;
101
102
  defaultValue: number;
102
103
  clearable: boolean;
103
- keyboard: boolean;
104
104
  allowClear: boolean;
105
105
  scoreTemplate: string;
106
106
  lowThreshold: number;