hys-ui 0.1.0 → 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 (247) hide show
  1. package/CHANGELOG.md +137 -1
  2. package/README.md +18 -6
  3. package/dist/components/HysAccordion/HysAccordion.vue.js +1 -1
  4. package/dist/components/HysAccordion/HysAccordion2.vue.js +181 -47
  5. package/dist/components/HysAlert/HysAlert.vue.js +14 -14
  6. package/dist/components/HysAnimatedNumber/HysAnimatedNumber.vue.js +23 -20
  7. package/dist/components/HysAutocomplete/HysAutocomplete.vue.js +7 -0
  8. package/dist/components/HysAutocomplete/HysAutocomplete2.vue.js +627 -0
  9. package/dist/components/HysAvatar/HysAvatar.vue.js +5 -35
  10. package/dist/components/HysAvatar/HysAvatar2.vue.js +221 -2
  11. package/dist/components/HysAvatarGroup/HysAvatarGroup.vue.js +7 -0
  12. package/dist/components/HysAvatarGroup/HysAvatarGroup2.vue.js +252 -0
  13. package/dist/components/HysBadge/HysBadge.vue.js +2 -2
  14. package/dist/components/HysBadge/HysBadge2.vue.js +154 -26
  15. package/dist/components/HysBreadcrumb/HysBreadcrumb.vue.js +5 -38
  16. package/dist/components/HysBreadcrumb/HysBreadcrumb2.vue.js +74 -2
  17. package/dist/components/HysButton/HysButton.vue.js +2 -2
  18. package/dist/components/HysButton/HysButton2.vue.js +29 -28
  19. package/dist/components/HysCalendar/HysCalendar.vue.js +5 -84
  20. package/dist/components/HysCalendar/HysCalendar2.vue.js +803 -2
  21. package/dist/components/HysCard/HysCard.vue.js +1 -1
  22. package/dist/components/HysCard/HysCard2.vue.js +177 -44
  23. package/dist/components/HysCascader/HysCascader.vue.js +5 -182
  24. package/dist/components/HysCascader/HysCascader2.vue.js +760 -2
  25. package/dist/components/HysCascader/HysCascaderColumn.vue.js +7 -0
  26. package/dist/components/HysCascader/HysCascaderColumn2.vue.js +232 -0
  27. package/dist/components/HysCheckbox/HysCheckbox.vue.js +5 -39
  28. package/dist/components/HysCheckbox/HysCheckbox2.vue.js +200 -2
  29. package/dist/components/HysCheckboxGroup/HysCheckboxGroup.vue.js +7 -0
  30. package/dist/components/HysCheckboxGroup/HysCheckboxGroup2.vue.js +237 -0
  31. package/dist/components/HysColorPicker/HysColorPicker.vue.js +2 -2
  32. package/dist/components/HysColorPicker/HysColorPicker2.vue.js +107 -106
  33. package/dist/components/HysCommandPalette/HysCommandPalette.vue.js +52 -51
  34. package/dist/components/HysCommentEditor/HysCommentEditor.vue.js +17 -17
  35. package/dist/components/HysDataGrid/HysDataGrid.vue.js +1 -1
  36. package/dist/components/HysDataGrid/HysDataGrid2.vue.js +397 -390
  37. package/dist/components/HysDatePicker/HysDatePicker.vue.js +268 -139
  38. package/dist/components/HysDatePicker/HysDatePickerControl.vue.js +7 -0
  39. package/dist/components/HysDatePicker/HysDatePickerControl2.vue.js +807 -0
  40. package/dist/components/HysDatePicker/HysDatePickerPanel.vue.js +7 -0
  41. package/dist/components/HysDatePicker/HysDatePickerPanel2.vue.js +357 -0
  42. package/dist/components/HysDateRangePicker/HysDateRangePicker.vue.js +268 -158
  43. package/dist/components/HysDivider/HysDivider.vue.js +2 -2
  44. package/dist/components/HysDivider/HysDivider2.vue.js +33 -13
  45. package/dist/components/HysDrawer/HysDrawer.vue.js +1 -1
  46. package/dist/components/HysDrawer/HysDrawer2.vue.js +55 -54
  47. package/dist/components/HysFileManager/HysFileManager.vue.js +5 -63
  48. package/dist/components/HysFileManager/HysFileManager2.vue.js +86 -2
  49. package/dist/components/HysForm/HysForm.vue.js +3 -3
  50. package/dist/components/HysForm/HysForm2.vue.js +580 -92
  51. package/dist/components/HysFormItem/HysFormItem.vue.js +5 -69
  52. package/dist/components/HysFormItem/HysFormItem2.vue.js +521 -2
  53. package/dist/components/HysGantt/HysGantt.vue.js +5 -264
  54. package/dist/components/HysGantt/HysGantt2.vue.js +1399 -2
  55. package/dist/components/HysInput/HysInput.vue.js +2 -2
  56. package/dist/components/HysInput/HysInput2.vue.js +468 -120
  57. package/dist/components/HysMention/HysMention.vue.js +2 -2
  58. package/dist/components/HysMention/HysMention2.vue.js +89 -88
  59. package/dist/components/HysModal/HysModal.vue.js +2 -2
  60. package/dist/components/HysModal/HysModal2.vue.js +35 -35
  61. package/dist/components/HysNotificationCenter/HysNotificationCenter.vue.js +37 -36
  62. package/dist/components/HysNumberInput/HysNumberInput.vue.js +2 -2
  63. package/dist/components/HysNumberInput/HysNumberInput2.vue.js +561 -70
  64. package/dist/components/HysOrgTree/HysOrgTree.vue.js +41 -36
  65. package/dist/components/HysPagination/HysPagination.vue.js +2 -2
  66. package/dist/components/HysPagination/HysPagination2.vue.js +93 -91
  67. package/dist/components/HysPermissionMatrix/HysPermissionMatrix.vue.js +5 -41
  68. package/dist/components/HysPermissionMatrix/HysPermissionMatrix2.vue.js +101 -2
  69. package/dist/components/HysRadio/HysRadio.vue.js +7 -0
  70. package/dist/components/HysRadio/HysRadio2.vue.js +180 -0
  71. package/dist/components/HysRadioGroup/HysRadioGroup.vue.js +5 -40
  72. package/dist/components/HysRadioGroup/HysRadioGroup2.vue.js +205 -2
  73. package/dist/components/HysRating/HysRating.vue.js +1 -1
  74. package/dist/components/HysRating/HysRating2.vue.js +288 -68
  75. package/dist/components/HysResizablePanel/HysResizablePanel.vue.js +46 -28
  76. package/dist/components/HysRichTextEditor/HysRichTextEditor.vue.js +2 -2
  77. package/dist/components/HysRichTextEditor/HysRichTextEditor2.vue.js +87 -67
  78. package/dist/components/HysSearch/HysSearch.vue.js +50 -38
  79. package/dist/components/HysSegmented/HysSegmented.vue.js +5 -58
  80. package/dist/components/HysSegmented/HysSegmented2.vue.js +273 -2
  81. package/dist/components/HysSelect/HysSelect.vue.js +3 -2
  82. package/dist/components/HysSelect/HysSelect2.vue.js +859 -164
  83. package/dist/components/HysSkeleton/HysSkeleton.vue.js +2 -2
  84. package/dist/components/HysSkeleton/HysSkeleton2.vue.js +126 -29
  85. package/dist/components/HysSlider/HysSlider.vue.js +2 -2
  86. package/dist/components/HysSlider/HysSlider2.vue.js +532 -59
  87. package/dist/components/HysSlider/SliderTooltip.vue.js +7 -0
  88. package/dist/components/HysSlider/SliderTooltip2.vue.js +156 -0
  89. package/dist/components/HysSplitPane/HysSplitPane.vue.js +48 -42
  90. package/dist/components/HysSteps/HysSteps.vue.js +2 -2
  91. package/dist/components/HysSteps/HysSteps2.vue.js +111 -36
  92. package/dist/components/HysSwitch/HysSwitch.vue.js +2 -2
  93. package/dist/components/HysSwitch/HysSwitch2.vue.js +235 -42
  94. package/dist/components/HysTable/HysTable.vue.js +1 -1
  95. package/dist/components/HysTable/HysTable2.vue.js +1471 -82
  96. package/dist/components/HysTable/HysTableFilterOptions.vue.js +7 -0
  97. package/dist/components/HysTable/HysTableFilterOptions2.vue.js +133 -0
  98. package/dist/components/HysTabs/HysTabs.vue.js +2 -2
  99. package/dist/components/HysTabs/HysTabs2.vue.js +262 -66
  100. package/dist/components/HysTagInput/HysTagInput.vue.js +43 -42
  101. package/dist/components/HysTextarea/HysTextarea.vue.js +137 -66
  102. package/dist/components/HysToast/HysToast.vue.js +2 -2
  103. package/dist/components/HysToast/HysToast2.vue.js +121 -38
  104. package/dist/components/HysTour/HysTour.vue.js +47 -42
  105. package/dist/components/HysTransfer/HysTransfer.vue.js +5 -207
  106. package/dist/components/HysTransfer/HysTransfer2.vue.js +416 -2
  107. package/dist/components/HysTransfer/HysTransferPanel.vue.js +7 -0
  108. package/dist/components/HysTransfer/HysTransferPanel2.vue.js +454 -0
  109. package/dist/components/HysTree/HysTree.vue.js +2 -3
  110. package/dist/components/HysTree/HysTree2.vue.js +641 -301
  111. package/dist/components/HysTreeSelect/HysTreeSelect.vue.js +5 -129
  112. package/dist/components/HysTreeSelect/HysTreeSelect2.vue.js +558 -2
  113. package/dist/components/HysTreeSelect/HysTreeSelectPanel.vue.js +7 -0
  114. package/dist/components/HysTreeSelect/HysTreeSelectPanel2.vue.js +323 -0
  115. package/dist/components/HysUpload/HysUpload.vue.js +2 -2
  116. package/dist/components/HysUpload/HysUpload2.vue.js +97 -78
  117. package/dist/composables/autocomplete.js +50 -0
  118. package/dist/composables/avatar.js +57 -0
  119. package/dist/composables/calendar.js +96 -0
  120. package/dist/composables/cascader.js +79 -0
  121. package/dist/composables/choice.js +38 -0
  122. package/dist/composables/choiceModel.js +67 -0
  123. package/dist/composables/datePicker.js +227 -0
  124. package/dist/composables/formContext.js +94 -3
  125. package/dist/composables/formLayout.js +57 -0
  126. package/dist/composables/formValidation.js +240 -0
  127. package/dist/composables/ganttConflicts.js +143 -0
  128. package/dist/composables/numberInput.js +91 -0
  129. package/dist/composables/rating.js +16 -0
  130. package/dist/composables/selectOptions.js +54 -0
  131. package/dist/composables/table.js +150 -0
  132. package/dist/composables/textInput.js +34 -0
  133. package/dist/composables/toastEscape.js +16 -0
  134. package/dist/composables/transfer.js +63 -0
  135. package/dist/composables/tree.js +118 -0
  136. package/dist/composables/treeSelect.js +71 -0
  137. package/dist/composables/useCascader.js +438 -0
  138. package/dist/composables/useDatePicker.js +425 -0
  139. package/dist/composables/useDialog.js +16 -16
  140. package/dist/composables/useFloating.js +98 -52
  141. package/dist/composables/useGanttDependencies.js +306 -0
  142. package/dist/composables/useGanttHistory.js +157 -0
  143. package/dist/composables/useGanttLabelResize.js +100 -0
  144. package/dist/composables/useHysToast.js +148 -0
  145. package/dist/composables/useTable.js +474 -0
  146. package/dist/composables/useTextareaSize.js +72 -0
  147. package/dist/composables/useTransfer.js +257 -0
  148. package/dist/composables/useTree.js +439 -0
  149. package/dist/composables/useTreeSelect.js +361 -0
  150. package/dist/config.js +18 -15
  151. package/dist/index.js +149 -136
  152. package/dist/style.css +1 -1
  153. package/dist/types/components/HysAccordion/HysAccordion.vue.d.ts +61 -22
  154. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +201 -0
  155. package/dist/types/components/HysAvatar/HysAvatar.vue.d.ts +28 -15
  156. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +99 -0
  157. package/dist/types/components/HysBadge/HysBadge.vue.d.ts +41 -4
  158. package/dist/types/components/HysBreadcrumb/HysBreadcrumb.vue.d.ts +38 -10
  159. package/dist/types/components/HysButton/HysButton.vue.d.ts +0 -1
  160. package/dist/types/components/HysCalendar/HysCalendar.vue.d.ts +119 -29
  161. package/dist/types/components/HysCard/HysCard.vue.d.ts +57 -5
  162. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +129 -41
  163. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +55 -0
  164. package/dist/types/components/HysCheckbox/HysCheckbox.vue.d.ts +55 -27
  165. package/dist/types/components/HysCheckboxGroup/HysCheckboxGroup.vue.d.ts +73 -0
  166. package/dist/types/components/HysDataGrid/HysDataGrid.vue.d.ts +1 -1
  167. package/dist/types/components/HysDatePicker/HysDatePicker.vue.d.ts +66 -14
  168. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +90 -0
  169. package/dist/types/components/HysDatePicker/HysDatePickerPanel.vue.d.ts +93 -0
  170. package/dist/types/components/HysDateRangePicker/HysDateRangePicker.vue.d.ts +66 -14
  171. package/dist/types/components/HysDivider/HysDivider.vue.d.ts +8 -3
  172. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +1 -0
  173. package/dist/types/components/HysFileManager/HysFileManager.vue.d.ts +8 -4
  174. package/dist/types/components/HysForm/HysForm.vue.d.ts +110 -18
  175. package/dist/types/components/HysFormItem/HysFormItem.vue.d.ts +108 -2
  176. package/dist/types/components/HysGantt/HysGantt.vue.d.ts +88 -4
  177. package/dist/types/components/HysInput/HysInput.vue.d.ts +52 -29
  178. package/dist/types/components/HysMention/HysMention.vue.d.ts +2 -2
  179. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +93 -33
  180. package/dist/types/components/HysOrgTree/HysOrgTree.vue.d.ts +4 -1
  181. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +1 -1
  182. package/dist/types/components/HysPermissionMatrix/HysPermissionMatrix.vue.d.ts +8 -1
  183. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +3 -3
  184. package/dist/types/components/HysProgress/HysProgress.vue.d.ts +1 -1
  185. package/dist/types/components/HysRadio/HysRadio.vue.d.ts +56 -0
  186. package/dist/types/components/HysRadioGroup/HysRadioGroup.vue.d.ts +62 -17
  187. package/dist/types/components/HysRating/HysRating.vue.d.ts +85 -5
  188. package/dist/types/components/HysResizablePanel/HysResizablePanel.vue.d.ts +6 -0
  189. package/dist/types/components/HysRichTextEditor/HysRichTextEditor.vue.d.ts +4 -4
  190. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +2 -2
  191. package/dist/types/components/HysSegmented/HysSegmented.vue.d.ts +64 -32
  192. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +120 -14
  193. package/dist/types/components/HysSkeleton/HysSkeleton.vue.d.ts +30 -2
  194. package/dist/types/components/HysSlider/HysSlider.vue.d.ts +66 -9
  195. package/dist/types/components/HysSlider/SliderTooltip.vue.d.ts +22 -0
  196. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +6 -0
  197. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +65 -9
  198. package/dist/types/components/HysSwitch/HysSwitch.vue.d.ts +76 -17
  199. package/dist/types/components/HysTable/HysTable.vue.d.ts +206 -32
  200. package/dist/types/components/HysTable/HysTableFilterOptions.vue.d.ts +18 -0
  201. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +76 -23
  202. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +5 -5
  203. package/dist/types/components/HysTextarea/HysTextarea.vue.d.ts +44 -27
  204. package/dist/types/components/HysToast/HysToast.vue.d.ts +55 -7
  205. package/dist/types/components/HysTour/HysTour.vue.d.ts +5 -3
  206. package/dist/types/components/HysTransfer/HysTransfer.vue.d.ts +55 -30
  207. package/dist/types/components/HysTransfer/HysTransferPanel.vue.d.ts +105 -0
  208. package/dist/types/components/HysTree/HysTree.vue.d.ts +140 -73
  209. package/dist/types/components/HysTreeSelect/HysTreeSelect.vue.d.ts +102 -23
  210. package/dist/types/components/HysTreeSelect/HysTreeSelectPanel.vue.d.ts +56 -0
  211. package/dist/types/composables/autocomplete.d.ts +106 -0
  212. package/dist/types/composables/avatar.d.ts +70 -0
  213. package/dist/types/composables/calendar.d.ts +66 -0
  214. package/dist/types/composables/cascader.d.ts +192 -0
  215. package/dist/types/composables/choice.d.ts +110 -0
  216. package/dist/types/composables/choiceModel.d.ts +11 -0
  217. package/dist/types/composables/datePicker.d.ts +247 -0
  218. package/dist/types/composables/formContext.d.ts +138 -8
  219. package/dist/types/composables/formLayout.d.ts +11 -0
  220. package/dist/types/composables/formValidation.d.ts +13 -0
  221. package/dist/types/composables/gantt.d.ts +68 -0
  222. package/dist/types/composables/ganttConflicts.d.ts +30 -0
  223. package/dist/types/composables/numberInput.d.ts +45 -0
  224. package/dist/types/composables/rating.d.ts +18 -0
  225. package/dist/types/composables/segmented.d.ts +15 -0
  226. package/dist/types/composables/selectOptions.d.ts +44 -0
  227. package/dist/types/composables/slider.d.ts +21 -0
  228. package/dist/types/composables/table.d.ts +309 -0
  229. package/dist/types/composables/textInput.d.ts +76 -0
  230. package/dist/types/composables/toastEscape.d.ts +1 -0
  231. package/dist/types/composables/transfer.d.ts +180 -0
  232. package/dist/types/composables/tree.d.ts +237 -0
  233. package/dist/types/composables/treeSelect.d.ts +167 -0
  234. package/dist/types/composables/useCascader.d.ts +162 -0
  235. package/dist/types/composables/useDatePicker.d.ts +79 -0
  236. package/dist/types/composables/useFloating.d.ts +8 -5
  237. package/dist/types/composables/useGanttDependencies.d.ts +83 -0
  238. package/dist/types/composables/useGanttHistory.d.ts +42 -0
  239. package/dist/types/composables/useGanttLabelResize.d.ts +23 -0
  240. package/dist/types/composables/useHysToast.d.ts +50 -0
  241. package/dist/types/composables/useTable.d.ts +60 -0
  242. package/dist/types/composables/useTextareaSize.d.ts +3 -0
  243. package/dist/types/composables/useTransfer.d.ts +58 -0
  244. package/dist/types/composables/useTree.d.ts +77 -0
  245. package/dist/types/composables/useTreeSelect.d.ts +117 -0
  246. package/dist/types/index.d.ts +38 -7
  247. package/package.json +47 -11
@@ -1,24 +1,154 @@
1
- import type { ComputedRef, InjectionKey, Ref } from 'vue';
1
+ import { type ComputedRef, type InjectionKey, type Ref } from "vue";
2
+ import type { RuleType, ValidateMessages } from "async-validator";
3
+ import type { HysFormCol } from "./formLayout";
4
+ export type HysFormPath = string | readonly (string | number)[];
5
+ export type HysFormPaths = string | readonly HysFormPath[];
6
+ export type HysFormTrigger = "blur" | "change";
7
+ export type HysFormStatus = "idle" | "validating" | "success" | "warning" | "error";
8
+ export type HysFormRuleType = RuleType;
9
+ export type HysFormMessages = Partial<ValidateMessages>;
10
+ export interface HysFormValidationContext {
11
+ path: string;
12
+ signal: AbortSignal;
13
+ }
14
+ export type HysFormValidateCallback = (valid: boolean, result: HysFormValidationResult) => void | Promise<void>;
15
+ export interface HysFormFieldData {
16
+ name: HysFormPath;
17
+ value?: unknown;
18
+ errors?: string[];
19
+ warnings?: string[];
20
+ }
2
21
  export interface HysFormRule {
22
+ type?: HysFormRuleType;
3
23
  required?: boolean;
4
- message?: string;
24
+ message?: string | ((path?: string) => string);
5
25
  min?: number;
6
26
  max?: number;
7
- pattern?: RegExp;
8
- trigger?: 'blur' | 'change' | ('blur' | 'change')[];
9
- validator?: (value: unknown, model: Record<string, unknown>) => boolean | string | void | Promise<boolean | string | void>;
27
+ len?: number;
28
+ enum?: Array<string | number | boolean | null | undefined>;
29
+ whitespace?: boolean;
30
+ pattern?: RegExp | string;
31
+ transform?: (value: unknown) => unknown;
32
+ fields?: HysFormRules;
33
+ defaultField?: HysFormRule | HysFormRule[];
34
+ trigger?: HysFormTrigger | HysFormTrigger[];
35
+ level?: "error" | "warning";
36
+ validator?: (value: unknown, model: Record<string, unknown>, context: HysFormValidationContext) => boolean | string | Error | void | Promise<boolean | string | Error | void>;
37
+ asyncValidator?: (value: unknown, callback: (error?: string | Error) => void, model: Record<string, unknown>, context: HysFormValidationContext) => void | Promise<void>;
38
+ }
39
+ export interface HysFormRules {
40
+ [path: string]: HysFormRule | HysFormRule[];
41
+ }
42
+ export interface HysFormValidationResult {
43
+ valid: boolean;
44
+ cancelled: boolean;
45
+ values: Record<string, unknown>;
46
+ errors: Record<string, string>;
47
+ warnings: Record<string, string>;
48
+ errorMessages: Record<string, string[]>;
49
+ warningMessages: Record<string, string[]>;
50
+ }
51
+ export interface HysFormFieldState {
52
+ status: HysFormStatus;
53
+ message: string;
54
+ warning: string;
55
+ validating: boolean;
56
+ }
57
+ export interface HysFormField {
58
+ path: ComputedRef<string>;
59
+ element: Ref<HTMLElement | undefined>;
60
+ rules: ComputedRef<HysFormRule[]>;
61
+ trigger: ComputedRef<HysFormTrigger | HysFormTrigger[]>;
62
+ dependencies?: ComputedRef<readonly HysFormPath[]>;
63
+ label: ComputedRef<string | undefined>;
64
+ validateFirst?: ComputedRef<boolean>;
65
+ preserve?: ComputedRef<boolean>;
66
+ validate: (trigger?: HysFormTrigger) => Promise<boolean>;
67
+ clearValidate: () => void;
68
+ resetField: () => void;
69
+ setInitialValue?: (value: unknown) => void;
70
+ focus: () => void;
10
71
  }
11
72
  export interface HysFormContext {
73
+ model: ComputedRef<Record<string, unknown> | undefined>;
74
+ resetting: Ref<boolean>;
75
+ suppressAutoBlur?: Ref<boolean>;
12
76
  errors: Ref<Record<string, string>>;
13
- rules: ComputedRef<Record<string, HysFormRule | HysFormRule[]>>;
14
- register: (name: string) => () => void;
15
- validateField: (name: string, trigger?: 'blur' | 'change') => Promise<boolean>;
77
+ warnings: Ref<Record<string, string>>;
78
+ errorMessages: Ref<Record<string, string[]>>;
79
+ warningMessages: Ref<Record<string, string[]>>;
80
+ states: Ref<Record<string, HysFormFieldState>>;
81
+ rules: ComputedRef<HysFormRules>;
82
+ getRules: (path: HysFormPath) => HysFormRule[];
83
+ disabled: ComputedRef<boolean>;
84
+ size: ComputedRef<"sm" | "md" | "lg">;
85
+ labelPosition: ComputedRef<"top" | "left" | "right">;
86
+ labelWidth: ComputedRef<string>;
87
+ autoLabelWidth: ComputedRef<string>;
88
+ containerWidth: ComputedRef<number>;
89
+ columns: ComputedRef<number>;
90
+ labelAlign: ComputedRef<"left" | "right">;
91
+ labelWrap: ComputedRef<boolean>;
92
+ labelSuffix: ComputedRef<string>;
93
+ colon: ComputedRef<boolean>;
94
+ labelCol: ComputedRef<HysFormCol | undefined>;
95
+ wrapperCol: ComputedRef<HysFormCol | undefined>;
96
+ inlineFeedback: ComputedRef<boolean>;
97
+ feedbackIcon: ComputedRef<boolean>;
98
+ optionalMark: ComputedRef<string>;
99
+ validateFirst: ComputedRef<boolean>;
100
+ preserve: ComputedRef<boolean>;
101
+ setLabelWidth: (key: string, width?: number) => void;
102
+ showLabel: ComputedRef<boolean>;
103
+ showFeedback: ComputedRef<boolean>;
104
+ showRequiredMark: ComputedRef<boolean>;
105
+ requiredMarkPosition: ComputedRef<"left" | "right">;
106
+ validateTrigger: ComputedRef<HysFormTrigger | HysFormTrigger[]>;
107
+ validateOnRuleChange: ComputedRef<boolean>;
108
+ register: (field: HysFormField) => () => void;
109
+ validateField: (name: HysFormPath, trigger?: HysFormTrigger) => Promise<boolean>;
110
+ cancelField: (name: HysFormPath) => void;
111
+ clearValidate: (names?: HysFormPaths) => void;
112
+ resetFields: (names?: HysFormPaths) => void;
113
+ setFieldInitialValue: (name: HysFormPath, value: unknown) => void;
16
114
  }
17
115
  export declare const formKey: InjectionKey<HysFormContext>;
18
116
  export interface HysFieldContext {
19
117
  id: Ref<string>;
118
+ label: ComputedRef<string | undefined>;
20
119
  error: ComputedRef<string | undefined>;
21
120
  errorId: string;
121
+ describedBy: ComputedRef<string | undefined>;
22
122
  required: ComputedRef<boolean>;
123
+ invalid?: ComputedRef<boolean>;
124
+ status?: ComputedRef<HysFormStatus>;
125
+ validate?: (trigger?: HysFormTrigger) => Promise<boolean>;
126
+ disabled?: ComputedRef<boolean>;
127
+ size?: ComputedRef<"sm" | "md" | "lg">;
23
128
  }
24
129
  export declare const fieldKey: InjectionKey<HysFieldContext>;
130
+ /** Integrate a custom control with its nearest FormItem without DOM queries. */
131
+ export declare function useHysFormItemContext(): {
132
+ id: ComputedRef<string | undefined>;
133
+ label: ComputedRef<string | undefined>;
134
+ disabled: ComputedRef<boolean>;
135
+ size: ComputedRef<"sm" | "md" | "lg">;
136
+ required: ComputedRef<boolean>;
137
+ invalid: ComputedRef<boolean>;
138
+ status: ComputedRef<HysFormStatus>;
139
+ error: ComputedRef<string | undefined>;
140
+ describedBy: ComputedRef<string | undefined>;
141
+ validate: (trigger?: HysFormTrigger) => Promise<boolean>;
142
+ };
143
+ export declare function useHysControlState(props: {
144
+ disabled?: boolean;
145
+ size?: "sm" | "md" | "lg";
146
+ }): {
147
+ disabled: ComputedRef<boolean>;
148
+ size: ComputedRef<"sm" | "md" | "lg">;
149
+ label: ComputedRef<string | undefined>;
150
+ };
151
+ export declare function formPath(path: HysFormPath): string;
152
+ export declare function formValue(model: Record<string, unknown> | undefined, path: HysFormPath): unknown;
153
+ export declare function setFormValue(model: Record<string, unknown>, path: HysFormPath, value: unknown): void;
154
+ export declare function focusHysField(control: HTMLElement | null | undefined): void;
@@ -0,0 +1,11 @@
1
+ import { type Ref } from "vue";
2
+ export type HysFormBreakpoint = "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
3
+ export type HysFormGridValue = number | Partial<Record<HysFormBreakpoint, number>>;
4
+ export interface HysFormColSize {
5
+ span?: number;
6
+ offset?: number;
7
+ }
8
+ export type HysFormCol = HysFormColSize & Partial<Record<HysFormBreakpoint, number | HysFormColSize>>;
9
+ export declare function resolveFormGrid(value: HysFormGridValue | undefined, width: number, fallback?: number): number;
10
+ export declare function resolveFormCol(value: HysFormCol | undefined, width: number): HysFormColSize | undefined;
11
+ export declare function useFormWidth(element: Ref<HTMLElement | undefined>): import("vue").ComputedRef<number>;
@@ -0,0 +1,13 @@
1
+ import { type HysFormMessages, type HysFormRule, type HysFormRules, type HysFormValidationContext } from "./formContext";
2
+ export declare function snapshotForm(value: unknown, seen?: WeakMap<object, unknown>): unknown;
3
+ export declare function sameFormValue(a: unknown, b: unknown, seen?: WeakMap<object, object>): boolean;
4
+ export interface HysFormRuleResult {
5
+ messages: string[];
6
+ fields: Record<string, string[]>;
7
+ }
8
+ export declare function runFormRules(name: string, value: unknown, rules: HysFormRule[], model: Record<string, unknown>, messages: HysFormMessages | undefined, context: HysFormValidationContext, first?: boolean): HysFormRuleResult | Promise<HysFormRuleResult>;
9
+ /** Resolve a mounted leaf against object/array descriptors declared on parents. */
10
+ export declare function nestedFormRules(path: string, rules: HysFormRules, model?: Record<string, unknown>): {
11
+ rules: HysFormRule[];
12
+ value: unknown;
13
+ };
@@ -0,0 +1,68 @@
1
+ export interface HysGanttScrollOptions {
2
+ behavior?: ScrollBehavior;
3
+ block?: ScrollLogicalPosition;
4
+ horizontal?: boolean;
5
+ }
6
+ export interface HysGanttDependencyChange {
7
+ sourceId: string | number;
8
+ targetId: string | number;
9
+ type: "add" | "remove";
10
+ }
11
+ export type HysGanttDependencyReason = "missing" | "disabled" | "self" | "duplicate" | "cycle" | "rejected" | "busy";
12
+ export type HysGanttHistoryType = "move" | "resize-start" | "resize-end" | "nudge" | "dependency-add" | "dependency-remove" | "dependency-move";
13
+ export interface HysGanttHistoryEntry {
14
+ type: HysGanttHistoryType;
15
+ label: string;
16
+ taskIds: Array<string | number>;
17
+ }
18
+ export interface HysGanttHistoryState {
19
+ canUndo: boolean;
20
+ canRedo: boolean;
21
+ undoCount: number;
22
+ redoCount: number;
23
+ undoLabel: string;
24
+ redoLabel: string;
25
+ pending: boolean;
26
+ }
27
+ export interface HysGanttHistoryInvalid {
28
+ action: "undo" | "redo";
29
+ reason: "disabled" | "busy" | "missing" | "stale" | "rejected";
30
+ }
31
+ export type HysGanttConflictType = "dependency-order" | "invalid-date" | "missing-dependency" | "dependency-cycle";
32
+ export interface HysGanttConflict {
33
+ id: string;
34
+ type: HysGanttConflictType;
35
+ taskId: string | number;
36
+ taskTitle: string;
37
+ sourceId?: string | number;
38
+ sourceTitle?: string;
39
+ message: string;
40
+ expectedStart?: string;
41
+ days?: number;
42
+ }
43
+ export interface HysGanttDependencyMove {
44
+ sourceId: string | number;
45
+ previousTargetId: string | number;
46
+ targetId: string | number;
47
+ type: "move";
48
+ }
49
+ export type HysGanttDependencyInvalid = (HysGanttDependencyChange | HysGanttDependencyMove) & {
50
+ reason: HysGanttDependencyReason;
51
+ };
52
+ export interface HysGanttInstance {
53
+ element: HTMLElement | undefined;
54
+ viewport: HTMLElement | null;
55
+ scrollToTask: (id: string | number, options?: HysGanttScrollOptions) => Promise<boolean>;
56
+ scrollToTop: (options?: Pick<HysGanttScrollOptions, "behavior">) => void;
57
+ addDependency: (sourceId: string | number, targetId: string | number) => Promise<boolean>;
58
+ removeDependency: (sourceId: string | number, targetId: string | number) => Promise<boolean>;
59
+ cancelDependency: () => void;
60
+ moveDependency: (sourceId: string | number, previousTargetId: string | number, targetId: string | number) => Promise<boolean>;
61
+ canUndo: boolean;
62
+ canRedo: boolean;
63
+ historyState: HysGanttHistoryState;
64
+ undo: () => Promise<boolean>;
65
+ redo: () => Promise<boolean>;
66
+ clearHistory: () => void;
67
+ conflicts: readonly HysGanttConflict[];
68
+ }
@@ -0,0 +1,30 @@
1
+ import type { HysGanttConflict } from "./gantt";
2
+ type Id = string | number;
3
+ export interface GanttScheduleTask {
4
+ id: Id;
5
+ title: string;
6
+ start: string;
7
+ end: string;
8
+ dependencies?: readonly Id[];
9
+ }
10
+ interface Task extends GanttScheduleTask {
11
+ s: number | null;
12
+ e: number | null;
13
+ }
14
+ interface Edge {
15
+ sourceId: Id;
16
+ targetId: Id;
17
+ id: string;
18
+ }
19
+ export declare function parseGanttDay(value: string): number | null;
20
+ export declare const ganttEdgeKey: (source: Id, target: Id) => string;
21
+ export declare function analyzeGanttSchedule(items: readonly GanttScheduleTask[]): {
22
+ conflicts: HysGanttConflict[];
23
+ byTask: Map<Id, HysGanttConflict[]>;
24
+ byEdge: Map<string, HysGanttConflict>;
25
+ tasks: Map<Id, Task>;
26
+ incident: Map<Id, Edge[]>;
27
+ cyclic: Set<string>;
28
+ };
29
+ export declare function previewGanttConflicts(analysis: ReturnType<typeof analyzeGanttSchedule>, id: Id, start: number, end: number): HysGanttConflict[];
30
+ export {};
@@ -0,0 +1,45 @@
1
+ export type HysNumberInputValue = number | string | null;
2
+ export interface HysNumberInputFormatInfo {
3
+ userTyping: boolean;
4
+ input: string;
5
+ }
6
+ export interface HysNumberInputStepInfo {
7
+ offset: number | string;
8
+ type: "up" | "down";
9
+ source: "button" | "keyboard" | "wheel" | "repeat" | "method";
10
+ }
11
+ export interface HysNumberInputInvalidInfo {
12
+ input: string;
13
+ reason: "parse" | "validator" | "range";
14
+ }
15
+ export interface HysNumberInputInstance {
16
+ input: HTMLInputElement | undefined;
17
+ focus: (options?: FocusOptions) => void;
18
+ blur: () => void;
19
+ select: () => void;
20
+ clear: () => void;
21
+ commit: () => boolean;
22
+ increase: (multiplier?: number) => void;
23
+ decrease: (multiplier?: number) => void;
24
+ }
25
+ export interface Decimal {
26
+ units: bigint;
27
+ scale: number;
28
+ }
29
+ export declare function decimal(value: unknown): Decimal | undefined;
30
+ export declare function decimalCompare(a: Decimal, b: Decimal): 0 | 1 | -1;
31
+ export declare function decimalAdd(a: Decimal, b: Decimal, multiplier?: number): {
32
+ units: bigint;
33
+ scale: number;
34
+ };
35
+ export declare function decimalRound(value: Decimal, precision: number): Decimal;
36
+ export declare function decimalText(value: Decimal, padTo?: number): string;
37
+ export interface NumberConstraints {
38
+ step: Decimal;
39
+ base: Decimal;
40
+ min?: Decimal;
41
+ max?: Decimal;
42
+ precision?: number;
43
+ strict: boolean;
44
+ }
45
+ export declare function normalizeDecimal(value: Decimal, options: NumberConstraints): Decimal | undefined;
@@ -0,0 +1,18 @@
1
+ import type { Component } from "vue";
2
+ export type HysRatingIcon = Component | string;
3
+ export type HysRatingLevels<T> = readonly T[] | Record<number, T | {
4
+ value: T;
5
+ excluded?: boolean;
6
+ }>;
7
+ export interface HysRatingInstance {
8
+ element: HTMLElement | undefined;
9
+ value: number;
10
+ hoverValue: number | null;
11
+ focus: (options?: FocusOptions) => void;
12
+ blur: () => void;
13
+ setValue: (value: number) => Promise<boolean>;
14
+ clear: () => Promise<boolean>;
15
+ setCurrentValue: (value: number) => void;
16
+ resetCurrentValue: () => void;
17
+ }
18
+ export declare function ratingLevel<T>(levels: HysRatingLevels<T> | undefined, value: number, low: number, high: number, fallback: T): T;
@@ -0,0 +1,15 @@
1
+ import type { Component, CSSProperties } from "vue";
2
+ import type { HysChoiceOption, HysChoiceValue } from "./choice";
3
+ export interface HysSegmentedOption<T extends HysChoiceValue = HysChoiceValue> extends HysChoiceOption<T> {
4
+ icon?: Component | string;
5
+ title?: string;
6
+ className?: string;
7
+ style?: CSSProperties;
8
+ }
9
+ export interface HysSegmentedInstance {
10
+ element: HTMLElement | undefined;
11
+ value: HysChoiceValue | null;
12
+ focus: (value?: HysChoiceValue) => void;
13
+ blur: () => void;
14
+ select: (value: HysChoiceValue) => Promise<boolean>;
15
+ }
@@ -0,0 +1,44 @@
1
+ export type HysSelectValue = string | number | boolean | Record<string, unknown>;
2
+ export type HysSelectModelValue = HysSelectValue | HysSelectValue[] | null;
3
+ export interface HysSelectOption {
4
+ label: string;
5
+ value: HysSelectValue;
6
+ disabled?: boolean;
7
+ [key: string]: unknown;
8
+ }
9
+ export interface HysSelectGroup {
10
+ label: string;
11
+ options: HysSelectOption[];
12
+ disabled?: boolean;
13
+ [key: string]: unknown;
14
+ }
15
+ export type HysSelectDataOption = HysSelectOption | HysSelectGroup | Record<string, unknown>;
16
+ export interface HysSelectFieldNames {
17
+ label?: string;
18
+ value?: string;
19
+ options?: string;
20
+ disabled?: string;
21
+ }
22
+ export interface HysSelectSearchContext {
23
+ signal: AbortSignal;
24
+ }
25
+ export interface HysSelectInstance {
26
+ focus: () => void;
27
+ blur: () => void;
28
+ open: () => Promise<void>;
29
+ close: () => void;
30
+ scrollTo: (value: HysSelectValue) => void;
31
+ retry: () => void;
32
+ selected: HysSelectOption[];
33
+ query: string;
34
+ isOpen: boolean;
35
+ }
36
+ export interface HysSelectRow {
37
+ key: string;
38
+ option?: HysSelectOption;
39
+ group?: string;
40
+ index: number;
41
+ created?: boolean;
42
+ }
43
+ export declare function selectKeyFactory(valueKey: () => string): (value: HysSelectValue) => string;
44
+ export declare function normalizeSelectOptions(options: readonly HysSelectDataOption[], names: HysSelectFieldNames, keyOf: (value: HysSelectValue) => string): HysSelectRow[];
@@ -0,0 +1,21 @@
1
+ import type { CSSProperties } from "vue";
2
+ export type HysSliderValue = number | [number, number];
3
+ export type HysSliderStep = number | "mark" | null;
4
+ export type HysSliderMarks = Record<number, string | {
5
+ label: string;
6
+ style?: CSSProperties;
7
+ }>;
8
+ export interface HysSliderDragInfo {
9
+ index: number;
10
+ track: boolean;
11
+ cancelled: boolean;
12
+ }
13
+ export interface HysSliderInstance {
14
+ element: HTMLElement | undefined;
15
+ dragging: boolean;
16
+ values: number[];
17
+ focus: (index?: number) => void;
18
+ blur: () => void;
19
+ setValue: (value: HysSliderValue) => void;
20
+ cancel: () => void;
21
+ }