hys-ui 0.1.1 → 0.2.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 (225) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +3 -1
  3. package/dist/components/HysAccordion/HysAccordion.vue.js +1 -1
  4. package/dist/components/HysAccordion/HysAccordion2.vue.js +181 -47
  5. package/dist/components/HysAutocomplete/HysAutocomplete.vue.js +7 -0
  6. package/dist/components/HysAutocomplete/HysAutocomplete2.vue.js +627 -0
  7. package/dist/components/HysAvatar/HysAvatar.vue.js +5 -35
  8. package/dist/components/HysAvatar/HysAvatar2.vue.js +221 -2
  9. package/dist/components/HysAvatarGroup/HysAvatarGroup.vue.js +7 -0
  10. package/dist/components/HysAvatarGroup/HysAvatarGroup2.vue.js +252 -0
  11. package/dist/components/HysBadge/HysBadge.vue.js +2 -2
  12. package/dist/components/HysBadge/HysBadge2.vue.js +154 -27
  13. package/dist/components/HysBreadcrumb/HysBreadcrumb.vue.js +5 -38
  14. package/dist/components/HysBreadcrumb/HysBreadcrumb2.vue.js +74 -2
  15. package/dist/components/HysButton/HysButton.vue.js +2 -2
  16. package/dist/components/HysButton/HysButton2.vue.js +29 -28
  17. package/dist/components/HysCalendar/HysCalendar.vue.js +5 -92
  18. package/dist/components/HysCalendar/HysCalendar2.vue.js +803 -2
  19. package/dist/components/HysCard/HysCard.vue.js +2 -2
  20. package/dist/components/HysCard/HysCard2.vue.js +175 -42
  21. package/dist/components/HysCascader/HysCascader.vue.js +5 -194
  22. package/dist/components/HysCascader/HysCascader2.vue.js +760 -2
  23. package/dist/components/HysCascader/HysCascaderColumn.vue.js +7 -0
  24. package/dist/components/HysCascader/HysCascaderColumn2.vue.js +232 -0
  25. package/dist/components/HysCheckbox/HysCheckbox.vue.js +3 -3
  26. package/dist/components/HysCheckbox/HysCheckbox2.vue.js +180 -65
  27. package/dist/components/HysCheckboxGroup/HysCheckboxGroup.vue.js +7 -0
  28. package/dist/components/HysCheckboxGroup/HysCheckboxGroup2.vue.js +237 -0
  29. package/dist/components/HysColorPicker/HysColorPicker.vue.js +2 -2
  30. package/dist/components/HysColorPicker/HysColorPicker2.vue.js +107 -106
  31. package/dist/components/HysDataGrid/HysDataGrid.vue.js +1 -1
  32. package/dist/components/HysDataGrid/HysDataGrid2.vue.js +399 -392
  33. package/dist/components/HysDatePicker/HysDatePicker.vue.js +268 -139
  34. package/dist/components/HysDatePicker/HysDatePickerControl.vue.js +7 -0
  35. package/dist/components/HysDatePicker/HysDatePickerControl2.vue.js +807 -0
  36. package/dist/components/HysDatePicker/HysDatePickerPanel.vue.js +7 -0
  37. package/dist/components/HysDatePicker/HysDatePickerPanel2.vue.js +357 -0
  38. package/dist/components/HysDateRangePicker/HysDateRangePicker.vue.js +268 -158
  39. package/dist/components/HysDivider/HysDivider.vue.js +2 -2
  40. package/dist/components/HysDivider/HysDivider2.vue.js +33 -13
  41. package/dist/components/HysFileManager/HysFileManager.vue.js +3 -3
  42. package/dist/components/HysFileManager/HysFileManager2.vue.js +43 -42
  43. package/dist/components/HysForm/HysForm.vue.js +3 -3
  44. package/dist/components/HysForm/HysForm2.vue.js +578 -92
  45. package/dist/components/HysFormItem/HysFormItem.vue.js +5 -85
  46. package/dist/components/HysFormItem/HysFormItem2.vue.js +521 -2
  47. package/dist/components/HysGantt/HysGantt.vue.js +1 -1
  48. package/dist/components/HysGantt/HysGantt2.vue.js +1369 -272
  49. package/dist/components/HysInput/HysInput.vue.js +2 -2
  50. package/dist/components/HysInput/HysInput2.vue.js +467 -120
  51. package/dist/components/HysMention/HysMention.vue.js +2 -2
  52. package/dist/components/HysMention/HysMention2.vue.js +89 -88
  53. package/dist/components/HysNumberInput/HysNumberInput.vue.js +2 -2
  54. package/dist/components/HysNumberInput/HysNumberInput2.vue.js +561 -79
  55. package/dist/components/HysOrgTree/HysOrgTree.vue.js +29 -26
  56. package/dist/components/HysPagination/HysPagination.vue.js +1 -1
  57. package/dist/components/HysPagination/HysPagination2.vue.js +2 -0
  58. package/dist/components/HysPermissionMatrix/HysPermissionMatrix.vue.js +2 -2
  59. package/dist/components/HysPermissionMatrix/HysPermissionMatrix2.vue.js +52 -51
  60. package/dist/components/HysRadio/HysRadio.vue.js +7 -0
  61. package/dist/components/HysRadio/HysRadio2.vue.js +180 -0
  62. package/dist/components/HysRadioGroup/HysRadioGroup.vue.js +2 -2
  63. package/dist/components/HysRadioGroup/HysRadioGroup2.vue.js +190 -65
  64. package/dist/components/HysRating/HysRating.vue.js +1 -1
  65. package/dist/components/HysRating/HysRating2.vue.js +288 -68
  66. package/dist/components/HysRichTextEditor/HysRichTextEditor.vue.js +1 -1
  67. package/dist/components/HysRichTextEditor/HysRichTextEditor2.vue.js +70 -69
  68. package/dist/components/HysSearch/HysSearch.vue.js +37 -36
  69. package/dist/components/HysSegmented/HysSegmented.vue.js +5 -63
  70. package/dist/components/HysSegmented/HysSegmented2.vue.js +273 -2
  71. package/dist/components/HysSelect/HysSelect.vue.js +3 -2
  72. package/dist/components/HysSelect/HysSelect2.vue.js +859 -185
  73. package/dist/components/HysSkeleton/HysSkeleton.vue.js +2 -2
  74. package/dist/components/HysSkeleton/HysSkeleton2.vue.js +126 -29
  75. package/dist/components/HysSlider/HysSlider.vue.js +2 -2
  76. package/dist/components/HysSlider/HysSlider2.vue.js +532 -59
  77. package/dist/components/HysSlider/SliderTooltip.vue.js +7 -0
  78. package/dist/components/HysSlider/SliderTooltip2.vue.js +156 -0
  79. package/dist/components/HysSteps/HysSteps.vue.js +1 -1
  80. package/dist/components/HysSteps/HysSteps2.vue.js +110 -36
  81. package/dist/components/HysSwitch/HysSwitch.vue.js +2 -2
  82. package/dist/components/HysSwitch/HysSwitch2.vue.js +232 -50
  83. package/dist/components/HysTable/HysTable.vue.js +2 -2
  84. package/dist/components/HysTable/HysTable2.vue.js +1473 -88
  85. package/dist/components/HysTable/HysTableFilterOptions.vue.js +7 -0
  86. package/dist/components/HysTable/HysTableFilterOptions2.vue.js +133 -0
  87. package/dist/components/HysTabs/HysTabs.vue.js +2 -2
  88. package/dist/components/HysTabs/HysTabs2.vue.js +262 -68
  89. package/dist/components/HysTagInput/HysTagInput.vue.js +43 -42
  90. package/dist/components/HysTextarea/HysTextarea.vue.js +138 -77
  91. package/dist/components/HysTransfer/HysTransfer.vue.js +5 -223
  92. package/dist/components/HysTransfer/HysTransfer2.vue.js +416 -2
  93. package/dist/components/HysTransfer/HysTransferPanel.vue.js +7 -0
  94. package/dist/components/HysTransfer/HysTransferPanel2.vue.js +454 -0
  95. package/dist/components/HysTree/HysTree.vue.js +2 -3
  96. package/dist/components/HysTree/HysTree2.vue.js +641 -302
  97. package/dist/components/HysTreeSelect/HysTreeSelect.vue.js +5 -136
  98. package/dist/components/HysTreeSelect/HysTreeSelect2.vue.js +558 -2
  99. package/dist/components/HysTreeSelect/HysTreeSelectPanel.vue.js +7 -0
  100. package/dist/components/HysTreeSelect/HysTreeSelectPanel2.vue.js +323 -0
  101. package/dist/components/HysUpload/HysUpload.vue.js +2 -2
  102. package/dist/components/HysUpload/HysUpload2.vue.js +77 -76
  103. package/dist/composables/autocomplete.js +50 -0
  104. package/dist/composables/avatar.js +57 -0
  105. package/dist/composables/calendar.js +96 -0
  106. package/dist/composables/cascader.js +79 -0
  107. package/dist/composables/choice.js +38 -0
  108. package/dist/composables/choiceModel.js +67 -0
  109. package/dist/composables/datePicker.js +227 -0
  110. package/dist/composables/formContext.js +92 -7
  111. package/dist/composables/formLayout.js +57 -0
  112. package/dist/composables/formValidation.js +240 -0
  113. package/dist/composables/ganttConflicts.js +143 -0
  114. package/dist/composables/numberInput.js +91 -0
  115. package/dist/composables/rating.js +16 -0
  116. package/dist/composables/selectOptions.js +54 -0
  117. package/dist/composables/table.js +150 -0
  118. package/dist/composables/textInput.js +34 -0
  119. package/dist/composables/transfer.js +63 -0
  120. package/dist/composables/tree.js +118 -0
  121. package/dist/composables/treeSelect.js +71 -0
  122. package/dist/composables/useCascader.js +438 -0
  123. package/dist/composables/useDatePicker.js +425 -0
  124. package/dist/composables/useFloating.js +97 -51
  125. package/dist/composables/useGanttDependencies.js +306 -0
  126. package/dist/composables/useGanttHistory.js +157 -0
  127. package/dist/composables/useGanttLabelResize.js +100 -0
  128. package/dist/composables/useTable.js +474 -0
  129. package/dist/composables/useTextareaSize.js +72 -0
  130. package/dist/composables/useTransfer.js +257 -0
  131. package/dist/composables/useTree.js +439 -0
  132. package/dist/composables/useTreeSelect.js +361 -0
  133. package/dist/index.js +149 -139
  134. package/dist/style.css +1 -1
  135. package/dist/types/components/HysAccordion/HysAccordion.vue.d.ts +61 -22
  136. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +201 -0
  137. package/dist/types/components/HysAvatar/HysAvatar.vue.d.ts +28 -15
  138. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +99 -0
  139. package/dist/types/components/HysBadge/HysBadge.vue.d.ts +41 -4
  140. package/dist/types/components/HysBreadcrumb/HysBreadcrumb.vue.d.ts +38 -10
  141. package/dist/types/components/HysButton/HysButton.vue.d.ts +0 -1
  142. package/dist/types/components/HysCalendar/HysCalendar.vue.d.ts +119 -31
  143. package/dist/types/components/HysCard/HysCard.vue.d.ts +55 -7
  144. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +129 -41
  145. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +55 -0
  146. package/dist/types/components/HysCheckbox/HysCheckbox.vue.d.ts +50 -39
  147. package/dist/types/components/HysCheckboxGroup/HysCheckboxGroup.vue.d.ts +73 -0
  148. package/dist/types/components/HysDataGrid/HysDataGrid.vue.d.ts +1 -1
  149. package/dist/types/components/HysDatePicker/HysDatePicker.vue.d.ts +66 -14
  150. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +90 -0
  151. package/dist/types/components/HysDatePicker/HysDatePickerPanel.vue.d.ts +93 -0
  152. package/dist/types/components/HysDateRangePicker/HysDateRangePicker.vue.d.ts +66 -14
  153. package/dist/types/components/HysDivider/HysDivider.vue.d.ts +8 -3
  154. package/dist/types/components/HysFileManager/HysFileManager.vue.d.ts +2 -2
  155. package/dist/types/components/HysForm/HysForm.vue.d.ts +110 -18
  156. package/dist/types/components/HysFormItem/HysFormItem.vue.d.ts +108 -2
  157. package/dist/types/components/HysGantt/HysGantt.vue.d.ts +82 -4
  158. package/dist/types/components/HysInput/HysInput.vue.d.ts +52 -29
  159. package/dist/types/components/HysMention/HysMention.vue.d.ts +2 -2
  160. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +93 -35
  161. package/dist/types/components/HysOrgTree/HysOrgTree.vue.d.ts +1 -0
  162. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +1 -1
  163. package/dist/types/components/HysPermissionMatrix/HysPermissionMatrix.vue.d.ts +2 -2
  164. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +3 -3
  165. package/dist/types/components/HysProgress/HysProgress.vue.d.ts +1 -1
  166. package/dist/types/components/HysRadio/HysRadio.vue.d.ts +56 -0
  167. package/dist/types/components/HysRadioGroup/HysRadioGroup.vue.d.ts +34 -12
  168. package/dist/types/components/HysRating/HysRating.vue.d.ts +85 -5
  169. package/dist/types/components/HysRichTextEditor/HysRichTextEditor.vue.d.ts +4 -4
  170. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +2 -2
  171. package/dist/types/components/HysSegmented/HysSegmented.vue.d.ts +64 -32
  172. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +120 -20
  173. package/dist/types/components/HysSkeleton/HysSkeleton.vue.d.ts +30 -2
  174. package/dist/types/components/HysSlider/HysSlider.vue.d.ts +66 -9
  175. package/dist/types/components/HysSlider/SliderTooltip.vue.d.ts +22 -0
  176. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +1 -1
  177. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +64 -9
  178. package/dist/types/components/HysSwitch/HysSwitch.vue.d.ts +76 -17
  179. package/dist/types/components/HysTable/HysTable.vue.d.ts +206 -32
  180. package/dist/types/components/HysTable/HysTableFilterOptions.vue.d.ts +18 -0
  181. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +76 -23
  182. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +5 -5
  183. package/dist/types/components/HysTextarea/HysTextarea.vue.d.ts +44 -27
  184. package/dist/types/components/HysToast/HysToast.vue.d.ts +3 -3
  185. package/dist/types/components/HysTour/HysTour.vue.d.ts +2 -2
  186. package/dist/types/components/HysTransfer/HysTransfer.vue.d.ts +55 -40
  187. package/dist/types/components/HysTransfer/HysTransferPanel.vue.d.ts +105 -0
  188. package/dist/types/components/HysTree/HysTree.vue.d.ts +140 -73
  189. package/dist/types/components/HysTreeSelect/HysTreeSelect.vue.d.ts +102 -23
  190. package/dist/types/components/HysTreeSelect/HysTreeSelectPanel.vue.d.ts +56 -0
  191. package/dist/types/composables/autocomplete.d.ts +106 -0
  192. package/dist/types/composables/avatar.d.ts +70 -0
  193. package/dist/types/composables/calendar.d.ts +66 -0
  194. package/dist/types/composables/cascader.d.ts +192 -0
  195. package/dist/types/composables/choice.d.ts +110 -0
  196. package/dist/types/composables/choiceModel.d.ts +11 -0
  197. package/dist/types/composables/datePicker.d.ts +247 -0
  198. package/dist/types/composables/formContext.d.ts +133 -8
  199. package/dist/types/composables/formLayout.d.ts +11 -0
  200. package/dist/types/composables/formValidation.d.ts +13 -0
  201. package/dist/types/composables/gantt.d.ts +68 -0
  202. package/dist/types/composables/ganttConflicts.d.ts +30 -0
  203. package/dist/types/composables/numberInput.d.ts +45 -0
  204. package/dist/types/composables/rating.d.ts +18 -0
  205. package/dist/types/composables/segmented.d.ts +15 -0
  206. package/dist/types/composables/selectOptions.d.ts +44 -0
  207. package/dist/types/composables/slider.d.ts +21 -0
  208. package/dist/types/composables/table.d.ts +309 -0
  209. package/dist/types/composables/textInput.d.ts +76 -0
  210. package/dist/types/composables/transfer.d.ts +180 -0
  211. package/dist/types/composables/tree.d.ts +237 -0
  212. package/dist/types/composables/treeSelect.d.ts +167 -0
  213. package/dist/types/composables/useCascader.d.ts +162 -0
  214. package/dist/types/composables/useDatePicker.d.ts +79 -0
  215. package/dist/types/composables/useFloating.d.ts +8 -5
  216. package/dist/types/composables/useGanttDependencies.d.ts +83 -0
  217. package/dist/types/composables/useGanttHistory.d.ts +42 -0
  218. package/dist/types/composables/useGanttLabelResize.d.ts +23 -0
  219. package/dist/types/composables/useTable.d.ts +60 -0
  220. package/dist/types/composables/useTextareaSize.d.ts +3 -0
  221. package/dist/types/composables/useTransfer.d.ts +58 -0
  222. package/dist/types/composables/useTree.d.ts +77 -0
  223. package/dist/types/composables/useTreeSelect.d.ts +117 -0
  224. package/dist/types/index.d.ts +33 -7
  225. package/package.json +2 -1
@@ -0,0 +1,180 @@
1
+ import type { CSSProperties, VNodeChild } from "vue";
2
+ export type HysTransferKey = string | number;
3
+ export type HysTransferSide = "left" | "right";
4
+ export interface HysTransferOption<K extends HysTransferKey = HysTransferKey> {
5
+ value: K;
6
+ label: string;
7
+ disabled?: boolean;
8
+ }
9
+ export interface HysTransferFieldNames {
10
+ value?: string;
11
+ label?: string;
12
+ disabled?: string;
13
+ }
14
+ export interface HysTransferPagination {
15
+ pageSize?: number;
16
+ pageSizeOptions?: number[];
17
+ showSizeChanger?: boolean;
18
+ compact?: boolean;
19
+ }
20
+ export interface HysTransferLocale {
21
+ leftTitle: string;
22
+ rightTitle: string;
23
+ search: string;
24
+ emptyLeft: string;
25
+ emptyRight: string;
26
+ noMatch: string;
27
+ loading: string;
28
+ selectAll: string;
29
+ invert: string;
30
+ remove: string;
31
+ moveRight: string;
32
+ moveLeft: string;
33
+ dragRight: string;
34
+ dragLeft: string;
35
+ dragCount: string;
36
+ moved: string;
37
+ added: string;
38
+ removed: string;
39
+ firstPage: string;
40
+ previousPage: string;
41
+ nextPage: string;
42
+ lastPage: string;
43
+ perPage: string;
44
+ }
45
+ export interface HysTransferHeaderInfo {
46
+ side: HysTransferSide;
47
+ total: number;
48
+ filtered: number;
49
+ checked: number;
50
+ }
51
+ export interface HysTransferRecord<T extends object, K extends HysTransferKey> {
52
+ key: K;
53
+ label: string;
54
+ disabled: boolean;
55
+ option: T;
56
+ }
57
+ export interface HysTransferProps<T extends object, K extends HysTransferKey> {
58
+ options: readonly T[];
59
+ modelValue?: readonly K[];
60
+ defaultValue?: readonly K[];
61
+ fieldNames?: HysTransferFieldNames;
62
+ rowKey?: (option: T) => K;
63
+ disabled?: boolean;
64
+ loading?: boolean;
65
+ filterable?: boolean;
66
+ filterMethod?: (query: string, option: T, side: HysTransferSide) => boolean;
67
+ filterPlaceholder?: string | readonly [string, string];
68
+ searchValues?: Partial<Record<HysTransferSide, string>>;
69
+ titles?: readonly [string, string];
70
+ buttonTexts?: readonly [string, string];
71
+ showSelectAll?: boolean;
72
+ showInvert?: boolean;
73
+ checkedKeys?: readonly K[];
74
+ defaultCheckedKeys?: readonly K[];
75
+ leftDefaultChecked?: readonly K[];
76
+ rightDefaultChecked?: readonly K[];
77
+ targetOrder?: "original" | "push" | "unshift";
78
+ oneWay?: boolean;
79
+ draggable?: boolean;
80
+ dragChecked?: boolean;
81
+ animated?: boolean;
82
+ size?: "sm" | "md" | "lg";
83
+ listHeight?: number;
84
+ listStyle?: CSSProperties;
85
+ operationStyle?: CSSProperties;
86
+ status?: "error" | "warning";
87
+ pagination?: boolean | HysTransferPagination;
88
+ pages?: Partial<Record<HysTransferSide, number>>;
89
+ pageSizes?: Partial<Record<HysTransferSide, number>>;
90
+ virtual?: boolean;
91
+ itemHeight?: number;
92
+ overscan?: number;
93
+ locale?: Partial<HysTransferLocale>;
94
+ format?: (info: HysTransferHeaderInfo) => string;
95
+ renderContent?: (option: T, side: HysTransferSide) => VNodeChild;
96
+ ariaLabel?: string;
97
+ validateEvent?: boolean;
98
+ }
99
+ export interface HysTransferPanelContext<T extends object, K extends HysTransferKey> {
100
+ side: HysTransferSide;
101
+ items: T[];
102
+ filteredItems: T[];
103
+ checkedKeys: K[];
104
+ disabled: boolean;
105
+ query: string;
106
+ check: (key: K, checked?: boolean) => Promise<boolean>;
107
+ setCheckedKeys: (keys: readonly K[]) => Promise<boolean>;
108
+ checkAll: (checked?: boolean) => Promise<boolean>;
109
+ remove: (keys: readonly K[]) => Promise<boolean>;
110
+ }
111
+ export interface HysTransferInstance<T extends object = HysTransferOption, K extends HysTransferKey = HysTransferKey> {
112
+ readonly element: HTMLElement | undefined;
113
+ readonly targetKeys: K[];
114
+ readonly checkedKeys: K[];
115
+ getCheckedKeys: (side?: HysTransferSide) => K[];
116
+ getTargetItems: () => T[];
117
+ move: (direction: HysTransferSide, keys?: readonly K[]) => Promise<boolean>;
118
+ remove: (keys: readonly K[]) => Promise<boolean>;
119
+ setCheckedKeys: (keys: readonly K[]) => Promise<boolean>;
120
+ clearChecked: (side?: HysTransferSide) => Promise<boolean>;
121
+ checkAll: (side: HysTransferSide, checked?: boolean, scope?: "page" | "filtered" | "all") => Promise<boolean>;
122
+ invertSelection: (side: HysTransferSide, scope?: "page" | "filtered" | "all") => Promise<boolean>;
123
+ setSearch: (side: HysTransferSide, value: string) => void;
124
+ clearSearch: (side?: HysTransferSide) => void;
125
+ setPage: (side: HysTransferSide, page: number) => void;
126
+ setPageSize: (side: HysTransferSide, size: number) => void;
127
+ scrollTo: (side: HysTransferSide, options: {
128
+ key?: K;
129
+ top?: number;
130
+ behavior?: ScrollBehavior;
131
+ }) => Promise<void>;
132
+ focus: (side?: HysTransferSide) => void;
133
+ }
134
+ export declare const transferToken: (key: HysTransferKey) => string;
135
+ export interface HysTransferSlots<T extends object, K extends HysTransferKey> {
136
+ default?: (props: {
137
+ option: T;
138
+ label: string;
139
+ side: HysTransferSide;
140
+ checked: boolean;
141
+ disabled: boolean;
142
+ }) => any;
143
+ option?: (props: {
144
+ option: T;
145
+ label: string;
146
+ side: HysTransferSide;
147
+ checked: boolean;
148
+ disabled: boolean;
149
+ }) => any;
150
+ panel?: (props: HysTransferPanelContext<T, K>) => any;
151
+ header?: (props: {
152
+ info: HysTransferHeaderInfo;
153
+ side: HysTransferSide;
154
+ allChecked: boolean;
155
+ indeterminate: boolean;
156
+ checkAll: (checked?: boolean) => Promise<boolean>;
157
+ }) => any;
158
+ footer?: (props: HysTransferPanelContext<T, K>) => any;
159
+ "left-footer"?: (props: HysTransferPanelContext<T, K>) => any;
160
+ "right-footer"?: (props: HysTransferPanelContext<T, K>) => any;
161
+ empty?: (props: HysTransferPanelContext<T, K>) => any;
162
+ "left-empty"?: (props: HysTransferPanelContext<T, K>) => any;
163
+ "right-empty"?: (props: HysTransferPanelContext<T, K>) => any;
164
+ loading?: (props: {
165
+ side: HysTransferSide;
166
+ }) => any;
167
+ operations?: (props: {
168
+ move: (side: HysTransferSide, keys?: readonly K[]) => Promise<boolean>;
169
+ disabled: boolean;
170
+ leftChecked: K[];
171
+ rightChecked: K[];
172
+ }) => any;
173
+ }
174
+ export declare function transferValue(option: object, path: string): unknown;
175
+ export declare function transferRows<T extends object, K extends HysTransferKey>(props: Pick<HysTransferProps<T, K>, "options" | "fieldNames" | "rowKey">): {
176
+ rows: HysTransferRecord<T, K>[];
177
+ map: Map<K, HysTransferRecord<T, K>>;
178
+ };
179
+ export declare const transferWords: (locale?: Partial<HysTransferLocale>) => HysTransferLocale;
180
+ export declare const transferLabel: (text: string, values: Record<string, string | number>) => string;
@@ -0,0 +1,237 @@
1
+ import type { CSSProperties, VNodeChild } from "vue";
2
+ export type HysTreeKey = string | number;
3
+ export type HysTreeValue = HysTreeKey | readonly HysTreeKey[] | null;
4
+ export interface HysTreeNode<K extends HysTreeKey = HysTreeKey> {
5
+ id: K;
6
+ label: string;
7
+ children?: HysTreeNode<K>[];
8
+ disabled?: boolean;
9
+ disableCheckbox?: boolean;
10
+ selectable?: boolean;
11
+ checkable?: boolean;
12
+ icon?: string;
13
+ hasChildren?: boolean;
14
+ isLeaf?: boolean;
15
+ loading?: boolean;
16
+ }
17
+ /** Existing string-key node type remains available. */
18
+ export type TreeNode = HysTreeNode<string>;
19
+ export type HysTreeDropPosition = "before" | "inside" | "after";
20
+ export interface HysTreeFieldNames {
21
+ id: string;
22
+ label: string;
23
+ children: string;
24
+ disabled: string;
25
+ disableCheckbox: string;
26
+ selectable: string;
27
+ checkable: string;
28
+ icon: string;
29
+ hasChildren: string;
30
+ isLeaf: string;
31
+ }
32
+ export interface HysTreeLoadContext {
33
+ signal: AbortSignal;
34
+ key: HysTreeKey;
35
+ }
36
+ export interface HysTreeLocale {
37
+ search: string;
38
+ empty: string;
39
+ noMatch: string;
40
+ loading: string;
41
+ retry: string;
42
+ loadError: string;
43
+ expand: string;
44
+ collapse: string;
45
+ check: string;
46
+ select: string;
47
+ clear: string;
48
+ close: string;
49
+ tree: string;
50
+ }
51
+ export interface HysTreeRecord<N extends object> {
52
+ key: HysTreeKey;
53
+ node: N;
54
+ label: string;
55
+ parent?: HysTreeKey;
56
+ children: HysTreeKey[];
57
+ depth: number;
58
+ index: number;
59
+ pos: number;
60
+ size: number;
61
+ disabled: boolean;
62
+ checkboxDisabled: boolean;
63
+ selectable: boolean;
64
+ checkable: boolean;
65
+ leaf: boolean;
66
+ hasChildren: boolean;
67
+ icon: unknown;
68
+ }
69
+ export interface HysTreeCheckInfo<N extends object> {
70
+ node?: N;
71
+ checked?: boolean;
72
+ checkedKeys: HysTreeKey[];
73
+ checkedNodes: N[];
74
+ halfCheckedKeys: HysTreeKey[];
75
+ halfCheckedNodes: N[];
76
+ event?: Event;
77
+ }
78
+ export interface HysTreeSelectInfo<N extends object> {
79
+ node: N | null;
80
+ selected: boolean;
81
+ selectedKeys: HysTreeKey[];
82
+ selectedNodes: N[];
83
+ event?: Event;
84
+ }
85
+ export interface HysTreeDropInfo<N extends object, K extends HysTreeKey = HysTreeKey> {
86
+ dragId: K;
87
+ targetId: K;
88
+ position: HysTreeDropPosition;
89
+ dragNode: N;
90
+ targetNode: N;
91
+ event: DragEvent;
92
+ }
93
+ export interface HysTreeNodeContext<N extends object> {
94
+ node: N;
95
+ key: HysTreeKey;
96
+ label: string;
97
+ depth: number;
98
+ expanded: boolean;
99
+ selected: boolean;
100
+ checked: boolean;
101
+ indeterminate: boolean;
102
+ disabled: boolean;
103
+ loading: boolean;
104
+ leaf: boolean;
105
+ }
106
+ export interface HysTreeProps<N extends object = TreeNode, V extends HysTreeValue = HysTreeValue> {
107
+ nodes: readonly N[];
108
+ modelValue?: V;
109
+ defaultValue?: V;
110
+ checkedKeys?: readonly HysTreeKey[];
111
+ defaultCheckedKeys?: readonly HysTreeKey[];
112
+ halfCheckedKeys?: readonly HysTreeKey[];
113
+ expandedKeys?: readonly HysTreeKey[];
114
+ defaultExpandedKeys?: readonly HysTreeKey[];
115
+ loadedKeys?: readonly HysTreeKey[];
116
+ multiple?: boolean;
117
+ selectable?: boolean;
118
+ checkable?: boolean;
119
+ searchable?: boolean;
120
+ disabled?: boolean;
121
+ inheritDisabled?: boolean;
122
+ loading?: boolean;
123
+ size?: "sm" | "md" | "lg";
124
+ defaultExpandAll?: boolean;
125
+ autoExpandParent?: boolean;
126
+ accordion?: boolean;
127
+ expandOnClickNode?: boolean;
128
+ expandOnDoubleClick?: boolean;
129
+ checkOnClickNode?: boolean;
130
+ checkOnClickLeaf?: boolean;
131
+ selectOnClickNode?: boolean;
132
+ allowDeselect?: boolean;
133
+ highlightCurrent?: boolean;
134
+ fieldNames?: Partial<HysTreeFieldNames>;
135
+ nodeKey?: string | ((node: N) => HysTreeKey);
136
+ showLine?: boolean;
137
+ showIcon?: boolean;
138
+ indent?: number;
139
+ blockNode?: boolean;
140
+ virtual?: boolean;
141
+ rowHeight?: number;
142
+ viewportHeight?: number;
143
+ overscan?: number;
144
+ draggable?: boolean;
145
+ dragExpandDelay?: number;
146
+ allowDrag?: (node: N) => boolean;
147
+ allowDrop?: (drag: N, target: N, position: HysTreeDropPosition) => boolean;
148
+ contextMenu?: boolean;
149
+ checkStrictly?: boolean;
150
+ searchValue?: string;
151
+ defaultSearchValue?: string;
152
+ searchPlaceholder?: string;
153
+ filterNode?: (query: string, node: N) => boolean;
154
+ filterMode?: "hide" | "highlight";
155
+ showMatchedChildren?: boolean;
156
+ emptyText?: string;
157
+ ariaLabel?: string;
158
+ locale?: Partial<HysTreeLocale>;
159
+ loadChildren?: (node: N, context: HysTreeLoadContext) => Promise<readonly N[]>;
160
+ renderContent?: (context: HysTreeNodeContext<N>) => VNodeChild;
161
+ nodeClass?: string | ((node: N) => string | undefined);
162
+ nodeStyle?: CSSProperties | ((node: N) => CSSProperties | undefined);
163
+ validateEvent?: boolean;
164
+ }
165
+ export interface HysTreeInstance<N extends object = TreeNode> {
166
+ readonly element: HTMLElement | undefined;
167
+ getNode: (key: HysTreeKey | N) => N | undefined;
168
+ getNodeInfo: (key: HysTreeKey | N) => HysTreeRecord<N> | undefined;
169
+ getCheckedKeys: (leafOnly?: boolean) => HysTreeKey[];
170
+ getCheckedNodes: (leafOnly?: boolean, includeHalfChecked?: boolean) => N[];
171
+ getHalfCheckedKeys: () => HysTreeKey[];
172
+ getHalfCheckedNodes: () => N[];
173
+ setCheckedKeys: (keys: readonly HysTreeKey[], leafOnly?: boolean) => Promise<boolean>;
174
+ setCheckedNodes: (nodes: readonly N[], leafOnly?: boolean) => Promise<boolean>;
175
+ setChecked: (key: HysTreeKey | N, checked: boolean, deep?: boolean) => Promise<boolean>;
176
+ getCurrentKey: () => HysTreeKey | null;
177
+ getCurrentNode: () => N | null;
178
+ getSelectedKeys: () => HysTreeKey[];
179
+ setCurrentKey: (key: HysTreeKey | null, expandParents?: boolean) => Promise<boolean>;
180
+ setCurrentNode: (node: N | null, expandParents?: boolean) => Promise<boolean>;
181
+ setSelectedKeys: (keys: readonly HysTreeKey[]) => Promise<boolean>;
182
+ getExpandedKeys: () => HysTreeKey[];
183
+ setExpandedKeys: (keys: readonly HysTreeKey[]) => Promise<boolean>;
184
+ expandNode: (key: HysTreeKey, expanded?: boolean) => Promise<boolean>;
185
+ expandAll: () => Promise<boolean>;
186
+ collapseAll: () => Promise<boolean>;
187
+ filter: (value: string) => void;
188
+ reloadNode: (key: HysTreeKey) => Promise<boolean>;
189
+ updateKeyChildren: (key: HysTreeKey, children: readonly N[]) => Promise<boolean>;
190
+ append: (node: N, parent?: HysTreeKey | N) => Promise<boolean>;
191
+ insertBefore: (node: N, reference: HysTreeKey | N) => Promise<boolean>;
192
+ insertAfter: (node: N, reference: HysTreeKey | N) => Promise<boolean>;
193
+ remove: (key: HysTreeKey | N) => Promise<boolean>;
194
+ scrollTo: (options: {
195
+ key?: HysTreeKey;
196
+ top?: number;
197
+ align?: "top" | "bottom" | "auto";
198
+ offset?: number;
199
+ behavior?: ScrollBehavior;
200
+ }) => Promise<void>;
201
+ focus: (key?: HysTreeKey) => Promise<void>;
202
+ }
203
+ export declare const treeLocale: HysTreeLocale;
204
+ export declare const treeKey: (v: unknown) => v is HysTreeKey;
205
+ export declare const treeKeys: (v: readonly HysTreeKey[]) => HysTreeKey[];
206
+ export declare function treeField(value: unknown, path: string): unknown;
207
+ export declare function treeAssign<N extends object>(node: N, path: string, value: unknown): N;
208
+ export declare function treeFields<N extends object>(props: HysTreeProps<N>): {
209
+ id: string;
210
+ label: string;
211
+ children: string;
212
+ disabled: string;
213
+ disableCheckbox: string;
214
+ selectable: string;
215
+ checkable: string;
216
+ icon: string;
217
+ hasChildren: string;
218
+ isLeaf: string;
219
+ };
220
+ export declare function treeIndex<N extends object>(nodes: readonly N[], props: HysTreeProps<N>, asyncChildren?: Map<HysTreeKey, readonly N[]>): {
221
+ map: Map<HysTreeKey, HysTreeRecord<N>>;
222
+ rows: HysTreeRecord<N>[];
223
+ roots: HysTreeKey[];
224
+ fields: {
225
+ id: string;
226
+ label: string;
227
+ children: string;
228
+ disabled: string;
229
+ disableCheckbox: string;
230
+ selectable: string;
231
+ checkable: string;
232
+ icon: string;
233
+ hasChildren: string;
234
+ isLeaf: string;
235
+ };
236
+ invalid: boolean;
237
+ };
@@ -0,0 +1,167 @@
1
+ import type { CSSProperties, VNodeChild } from "vue";
2
+ import { type HysTreeKey, type HysTreeFieldNames, type HysTreeLoadContext, type HysTreeLocale } from "./tree";
3
+ import type { Placement } from "./useFloating";
4
+ export interface HysTreeSelectDataNode<K extends HysTreeKey = HysTreeKey> {
5
+ value: K;
6
+ label: string;
7
+ children?: HysTreeSelectDataNode<K>[];
8
+ disabled?: boolean;
9
+ disableCheckbox?: boolean;
10
+ checkable?: boolean;
11
+ selectable?: boolean;
12
+ hasChildren?: boolean;
13
+ isLeaf?: boolean;
14
+ }
15
+ export type HysTreeSelectNode = HysTreeSelectDataNode<string>;
16
+ export interface HysTreeSelectLabelValue {
17
+ value: HysTreeKey;
18
+ label?: VNodeChild;
19
+ disabled?: boolean;
20
+ }
21
+ export type HysTreeSelectValue = HysTreeKey | HysTreeSelectLabelValue | readonly (HysTreeKey | HysTreeSelectLabelValue)[] | null;
22
+ export interface HysTreeSelectFieldNames extends Omit<HysTreeFieldNames, "id"> {
23
+ value: string;
24
+ }
25
+ export interface HysTreeSelectSimpleMode {
26
+ id?: string;
27
+ parentId?: string;
28
+ rootParentId?: HysTreeKey | null;
29
+ }
30
+ export type HysTreeSelectStrategy = "all" | "parent" | "child";
31
+ export interface HysTreeSelectItem<N extends object = HysTreeSelectNode> {
32
+ value: HysTreeKey;
33
+ label: VNodeChild;
34
+ node?: N;
35
+ disabled: boolean;
36
+ missing: boolean;
37
+ }
38
+ export interface HysTreeSelectChange<N extends object = HysTreeSelectNode> {
39
+ reason: "select" | "check" | "remove" | "clear" | "api";
40
+ node?: N;
41
+ values: HysTreeKey[];
42
+ items: HysTreeSelectItem<N>[];
43
+ halfCheckedKeys: HysTreeKey[];
44
+ event?: Event;
45
+ }
46
+ export interface HysTreeSelectProps<N extends object = HysTreeSelectNode, V extends HysTreeSelectValue = HysTreeSelectValue> {
47
+ modelValue?: V;
48
+ defaultValue?: V;
49
+ nodes: readonly N[];
50
+ cacheData?: readonly N[];
51
+ fieldNames?: Partial<HysTreeSelectFieldNames>;
52
+ nodeKey?: string | ((node: N) => HysTreeKey);
53
+ simpleMode?: boolean | HysTreeSelectSimpleMode;
54
+ labelInValue?: boolean;
55
+ disabled?: boolean;
56
+ readonly?: boolean;
57
+ loading?: boolean;
58
+ size?: "sm" | "md" | "lg";
59
+ status?: "error" | "warning" | "success";
60
+ placeholder?: string;
61
+ ariaLabel?: string;
62
+ name?: string;
63
+ multiple?: boolean;
64
+ leafOnly?: boolean;
65
+ checkable?: boolean;
66
+ checkStrictly?: boolean;
67
+ showCheckedStrategy?: HysTreeSelectStrategy;
68
+ clearable?: boolean;
69
+ clearValue?: HysTreeKey | null;
70
+ removable?: boolean;
71
+ multipleLimit?: number;
72
+ maxTagCount?: number;
73
+ maxTagTextLength?: number;
74
+ searchable?: boolean;
75
+ searchValue?: string;
76
+ defaultSearchValue?: string;
77
+ searchPlaceholder?: string;
78
+ filterNode?: (query: string, node: N) => boolean;
79
+ filterMode?: "hide" | "highlight";
80
+ showMatchedChildren?: boolean;
81
+ retainSearch?: boolean;
82
+ clearSearchAfterSelect?: boolean;
83
+ remote?: boolean;
84
+ remoteMethod?: (query: string, context: {
85
+ signal: AbortSignal;
86
+ }) => void | readonly N[] | Promise<void | readonly N[]>;
87
+ debounce?: number;
88
+ expandedKeys?: readonly HysTreeKey[];
89
+ defaultExpandedKeys?: readonly HysTreeKey[];
90
+ defaultExpandAll?: boolean;
91
+ autoExpandParent?: boolean;
92
+ accordion?: boolean;
93
+ expandOnClickNode?: boolean;
94
+ expandSelected?: boolean;
95
+ loadedKeys?: readonly HysTreeKey[];
96
+ loadChildren?: (node: N, context: HysTreeLoadContext) => Promise<readonly N[]>;
97
+ showLine?: boolean;
98
+ showIcon?: boolean;
99
+ indent?: number;
100
+ open?: boolean;
101
+ defaultOpen?: boolean;
102
+ showOnFocus?: boolean;
103
+ popupMatchWidth?: boolean;
104
+ popupWidth?: number | string;
105
+ popupClass?: string;
106
+ popupStyle?: CSSProperties;
107
+ appendTo?: string | HTMLElement | false;
108
+ placement?: Placement;
109
+ listHeight?: number;
110
+ virtual?: boolean;
111
+ itemHeight?: number;
112
+ overscan?: number;
113
+ emptyText?: string;
114
+ noMatchText?: string;
115
+ loadingText?: string;
116
+ locale?: Partial<HysTreeLocale>;
117
+ validateEvent?: boolean;
118
+ }
119
+ export interface HysTreeSelectInstance<N extends object = HysTreeSelectNode> {
120
+ readonly element: HTMLElement | undefined;
121
+ readonly open: boolean;
122
+ focus: () => void;
123
+ blur: () => void;
124
+ show: () => Promise<boolean>;
125
+ hide: (restoreFocus?: boolean) => void;
126
+ clear: () => Promise<boolean>;
127
+ removeTag: (key: HysTreeKey) => Promise<boolean>;
128
+ setValue: (value: HysTreeSelectValue) => Promise<boolean>;
129
+ filter: (query: string) => void;
130
+ getSelectedKeys: () => HysTreeKey[];
131
+ getSelectedItems: () => HysTreeSelectItem<N>[];
132
+ getCheckedKeys: (leafOnly?: boolean) => HysTreeKey[];
133
+ getHalfCheckedKeys: () => HysTreeKey[];
134
+ getNode: (key: HysTreeKey) => N | undefined;
135
+ getExpandedKeys: () => HysTreeKey[];
136
+ setExpandedKeys: (keys: readonly HysTreeKey[]) => Promise<boolean>;
137
+ expandNode: (key: HysTreeKey, expanded?: boolean) => Promise<boolean>;
138
+ reloadNode: (key: HysTreeKey) => Promise<boolean>;
139
+ scrollTo: (options: {
140
+ key?: HysTreeKey;
141
+ top?: number;
142
+ align?: "top" | "bottom" | "auto";
143
+ }) => Promise<void>;
144
+ }
145
+ export declare function treeSelectFields<N extends object>(props: HysTreeSelectProps<N>): Partial<HysTreeFieldNames>;
146
+ export declare function treeSelectForest<N extends object>(nodes: readonly N[], props: HysTreeSelectProps<N>): {
147
+ nodes: readonly N[];
148
+ raw: Map<HysTreeKey, N>;
149
+ };
150
+ export declare const selectTreeIndex: <N extends object>(nodes: readonly N[], props: HysTreeSelectProps<N>) => {
151
+ map: Map<HysTreeKey, import("./tree").HysTreeRecord<N>>;
152
+ rows: import("./tree").HysTreeRecord<N>[];
153
+ roots: HysTreeKey[];
154
+ fields: {
155
+ id: string;
156
+ label: string;
157
+ children: string;
158
+ disabled: string;
159
+ disableCheckbox: string;
160
+ selectable: string;
161
+ checkable: string;
162
+ icon: string;
163
+ hasChildren: string;
164
+ isLeaf: string;
165
+ };
166
+ invalid: boolean;
167
+ };