niuma-ui 2.0.3 → 2.0.9

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 (457) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/components/_shared/index.d.ts +2 -2
  3. package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
  4. package/dist/components/_shared/src/overlay-utils.js +87 -2
  5. package/dist/components/_shared/src/reka.d.ts +1 -1
  6. package/dist/components/_shared/src/reka.js +2 -2
  7. package/dist/components/alert/index.d.ts +1 -0
  8. package/dist/components/alert/src/RsAlert.css +120 -65
  9. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  10. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  11. package/dist/components/alert/src/RsAlert.js +1 -1
  12. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  13. package/dist/components/alert/src/alert-utils.js +71 -0
  14. package/dist/components/anchor/index.d.ts +1 -1
  15. package/dist/components/anchor/src/RsAnchor.css +63 -32
  16. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  17. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  18. package/dist/components/anchor/src/RsAnchor.js +1 -1
  19. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  20. package/dist/components/anchor/src/anchor-utils.js +81 -19
  21. package/dist/components/auto-complete/index.d.ts +2 -0
  22. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  23. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  24. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  25. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  26. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  27. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  28. package/dist/components/avatar/index.d.ts +1 -0
  29. package/dist/components/avatar/src/RsAvatar.css +36 -19
  30. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  31. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  32. package/dist/components/avatar/src/RsAvatar.js +2 -1
  33. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  34. package/dist/components/avatar/src/avatar-utils.js +41 -3
  35. package/dist/components/breadcrumb/index.d.ts +1 -1
  36. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  37. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  38. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  39. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  40. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  41. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  42. package/dist/components/button/src/RsButton.impl.js +1 -1
  43. package/dist/components/calendar-grid/index.d.ts +2 -0
  44. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  45. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  46. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  47. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  48. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  49. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  50. package/dist/components/card/index.d.ts +1 -1
  51. package/dist/components/card/src/RsCard.css +108 -98
  52. package/dist/components/card/src/RsCard.d.ts +4 -13
  53. package/dist/components/card/src/RsCard.impl.js +29 -25
  54. package/dist/components/card/src/RsCard.js +2 -1
  55. package/dist/components/card/src/card-utils.d.ts +25 -0
  56. package/dist/components/card/src/card-utils.js +10 -0
  57. package/dist/components/cascader/index.d.ts +1 -0
  58. package/dist/components/cascader/src/RsCascader.css +175 -30
  59. package/dist/components/cascader/src/RsCascader.d.ts +15 -3
  60. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  61. package/dist/components/cascader/src/RsCascader.js +1 -1
  62. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  63. package/dist/components/cascader/src/cascader-utils.js +8 -1
  64. package/dist/components/checkbox/index.d.ts +1 -0
  65. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  66. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  67. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  68. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  69. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  70. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  71. package/dist/components/code-block/index.d.ts +1 -0
  72. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  73. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  74. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  75. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  76. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  77. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  78. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  79. package/dist/components/code-block/src/code-block-utils.js +71 -0
  80. package/dist/components/code-editor/index.d.ts +1 -1
  81. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  82. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  83. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  84. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  85. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  86. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  87. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  88. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  89. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  90. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  91. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  92. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  93. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  94. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  95. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  96. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  97. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  98. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  99. package/dist/components/container/index.d.ts +1 -1
  100. package/dist/components/container/src/RsContainer.css +11 -11
  101. package/dist/components/container/src/RsContainer.d.ts +2 -12
  102. package/dist/components/container/src/RsContainer.impl.js +10 -57
  103. package/dist/components/container/src/RsContainer.js +1 -1
  104. package/dist/components/container/src/container-utils.d.ts +23 -0
  105. package/dist/components/container/src/container-utils.js +51 -0
  106. package/dist/components/context-menu/index.d.ts +1 -1
  107. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  108. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  109. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  110. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  111. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  112. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  113. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  114. package/dist/components/date-picker/index.d.ts +4 -2
  115. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  116. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  117. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  118. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  119. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  120. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  121. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  122. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  123. package/dist/components/descriptions/index.d.ts +1 -1
  124. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  125. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  126. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  127. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  128. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  129. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  130. package/dist/components/dialog/index.d.ts +1 -1
  131. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  132. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  133. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  134. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  135. package/dist/components/dialog/src/RsDialog.css +102 -109
  136. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  137. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  138. package/dist/components/dialog/src/RsDialog.js +2 -1
  139. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  140. package/dist/components/dialog/src/dialog-utils.js +152 -1
  141. package/dist/components/dialog/src/dialog-window.js +29 -8
  142. package/dist/components/drawer/index.d.ts +1 -1
  143. package/dist/components/drawer/src/RsDrawer.css +61 -29
  144. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  145. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  146. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  147. package/dist/components/drawer/src/drawer-utils.js +131 -1
  148. package/dist/components/dropdown/index.d.ts +1 -1
  149. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  150. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  151. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  152. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  153. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  154. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  155. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  156. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  157. package/dist/components/dynamic-tags/index.d.ts +1 -1
  158. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  159. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +58 -17
  160. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  161. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  162. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  163. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  164. package/dist/components/empty/index.d.ts +1 -0
  165. package/dist/components/empty/src/RsEmpty.css +105 -23
  166. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  167. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  168. package/dist/components/empty/src/RsEmpty.js +2 -1
  169. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  170. package/dist/components/empty/src/empty-utils.js +55 -0
  171. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  172. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  173. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  174. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  175. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  176. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  177. package/dist/components/form/index.d.ts +1 -0
  178. package/dist/components/form/src/RsForm.css +15 -12
  179. package/dist/components/form/src/RsForm.d.ts +21 -23
  180. package/dist/components/form/src/RsForm.impl.js +33 -20
  181. package/dist/components/form/src/RsForm.js +1 -1
  182. package/dist/components/form/src/form-utils.d.ts +7 -0
  183. package/dist/components/form/src/form-utils.js +28 -1
  184. package/dist/components/input/index.d.ts +1 -1
  185. package/dist/components/input/src/RsInput.css +78 -260
  186. package/dist/components/input/src/RsInput.d.ts +5 -3
  187. package/dist/components/input/src/RsInput.impl.js +8 -16
  188. package/dist/components/input/src/RsInput.js +1 -1
  189. package/dist/components/input/src/input-utils.d.ts +11 -0
  190. package/dist/components/input/src/input-utils.js +22 -0
  191. package/dist/components/input-number/index.d.ts +1 -0
  192. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  193. package/dist/components/input-number/src/RsInputNumber.d.ts +16 -14
  194. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  195. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  196. package/dist/components/label/src/RsLabel.css +30 -11
  197. package/dist/components/label/src/RsLabel.d.ts +18 -1
  198. package/dist/components/label/src/RsLabel.impl.js +63 -10
  199. package/dist/components/label/src/RsLabel.js +1 -1
  200. package/dist/components/label/src/label-utils.d.ts +6 -0
  201. package/dist/components/label/src/label-utils.js +16 -0
  202. package/dist/components/link/src/RsLink.d.ts +2 -2
  203. package/dist/components/loading/index.d.ts +1 -0
  204. package/dist/components/loading/src/RsLoading.css +13 -97
  205. package/dist/components/loading/src/RsLoading.d.ts +53 -3
  206. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  207. package/dist/components/loading/src/RsLoading.js +2 -1
  208. package/dist/components/loading/src/loading-status.css +210 -0
  209. package/dist/components/loading/src/loading-status.d.ts +34 -0
  210. package/dist/components/loading/src/loading-status.impl.js +84 -0
  211. package/dist/components/loading/src/loading-status.js +8 -0
  212. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  213. package/dist/components/loading/src/loading-utils.js +122 -0
  214. package/dist/components/loading-bar/index.d.ts +1 -0
  215. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  216. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  217. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  218. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  219. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  220. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  221. package/dist/components/log/src/RsLog.css +52 -144
  222. package/dist/components/log/src/RsLog.d.ts +12 -11
  223. package/dist/components/log/src/RsLog.impl.js +181 -148
  224. package/dist/components/log/src/RsLog.js +1 -1
  225. package/dist/components/log/src/RsLogRow.css +152 -0
  226. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  227. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  228. package/dist/components/log/src/RsLogRow.js +8 -0
  229. package/dist/components/log/src/log-utils.d.ts +8 -0
  230. package/dist/components/log/src/log-utils.js +71 -10
  231. package/dist/components/markdown/index.d.ts +1 -1
  232. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  233. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  234. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  235. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  236. package/dist/components/markdown/src/markdown-utils.js +114 -12
  237. package/dist/components/mentions/index.d.ts +2 -1
  238. package/dist/components/mentions/src/RsMentions.css +119 -3
  239. package/dist/components/mentions/src/RsMentions.d.ts +57 -5
  240. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  241. package/dist/components/mentions/src/RsMentions.js +1 -3
  242. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  243. package/dist/components/mentions/src/mentions-utils.js +28 -9
  244. package/dist/components/menu/index.d.ts +1 -1
  245. package/dist/components/menu/src/RsMenu.css +70 -29
  246. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  247. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  248. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  249. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  250. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  251. package/dist/components/menu/src/menu-utils.js +139 -6
  252. package/dist/components/monaco-editor/index.d.ts +1 -1
  253. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  254. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  255. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  256. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  257. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  258. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  259. package/dist/components/pagination/index.d.ts +2 -2
  260. package/dist/components/pagination/src/RsPagination.css +93 -46
  261. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  262. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  263. package/dist/components/pagination/src/RsPagination.js +1 -1
  264. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  265. package/dist/components/pagination/src/pagination-utils.js +105 -1
  266. package/dist/components/popover/index.d.ts +1 -0
  267. package/dist/components/popover/src/RsPopover.css +124 -14
  268. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  269. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  270. package/dist/components/popover/src/RsPopover.js +2 -1
  271. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  272. package/dist/components/popover/src/popover-utils.js +55 -0
  273. package/dist/components/radio/index.d.ts +1 -1
  274. package/dist/components/radio/src/RsRadio.css +7 -6
  275. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  276. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  277. package/dist/components/radio/src/RsRadio.js +2 -1
  278. package/dist/components/radio/src/RsRadioItem.css +61 -44
  279. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  280. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  281. package/dist/components/radio/src/RsRadioItem.js +2 -1
  282. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  283. package/dist/components/radio/src/radio-utils.js +15 -1
  284. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  285. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  286. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  287. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  288. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  289. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  290. package/dist/components/select/index.d.ts +1 -0
  291. package/dist/components/select/src/RsSelect.css +54 -42
  292. package/dist/components/select/src/RsSelect.d.ts +19 -2
  293. package/dist/components/select/src/RsSelect.impl.js +727 -312
  294. package/dist/components/select/src/RsSelect.js +1 -1
  295. package/dist/components/select/src/select-utils.d.ts +4 -2
  296. package/dist/components/select/src/select-utils.js +8 -3
  297. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  298. package/dist/components/select/src/use-rs-select.js +23 -17
  299. package/dist/components/sidebar/index.d.ts +1 -0
  300. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  301. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  302. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  303. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  304. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  305. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  306. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  307. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  308. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  309. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  310. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  311. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  312. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  313. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  314. package/dist/components/split-pane/index.d.ts +2 -2
  315. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  316. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  317. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  318. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  319. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  320. package/dist/components/stat-card/index.d.ts +1 -0
  321. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  322. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  323. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  324. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  325. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  326. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  327. package/dist/components/steps/index.d.ts +1 -1
  328. package/dist/components/steps/src/RsSteps.css +158 -37
  329. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  330. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  331. package/dist/components/steps/src/RsSteps.js +1 -1
  332. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  333. package/dist/components/steps/src/steps-utils.js +67 -1
  334. package/dist/components/switch/index.d.ts +2 -1
  335. package/dist/components/switch/src/RsSwitch.css +36 -18
  336. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  337. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  338. package/dist/components/switch/src/RsSwitch.js +2 -1
  339. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  340. package/dist/components/switch/src/switch-utils.js +9 -0
  341. package/dist/components/table/src/RsTable.impl.js +4 -2
  342. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  343. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  344. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  345. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  346. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  347. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  348. package/dist/components/table/src/rs-table-props.js +0 -1
  349. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  350. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  351. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  352. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  353. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  354. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  355. package/dist/components/table/src/utils/table-utils.js +27 -25
  356. package/dist/components/table/style/rs-table.css +34 -20
  357. package/dist/components/tabs/index.d.ts +2 -2
  358. package/dist/components/tabs/src/RsTabs.css +225 -101
  359. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  360. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  361. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  362. package/dist/components/tabs/src/tabs-utils.js +55 -1
  363. package/dist/components/terminal/index.d.ts +1 -1
  364. package/dist/components/terminal/src/RsTerminal.css +60 -37
  365. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  366. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  367. package/dist/components/terminal/src/RsTerminal.js +1 -1
  368. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  369. package/dist/components/terminal/src/terminal-utils.js +113 -10
  370. package/dist/components/textarea/src/RsTextarea.css +23 -23
  371. package/dist/components/textarea/src/RsTextarea.d.ts +7 -13
  372. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  373. package/dist/components/textarea/src/RsTextarea.js +1 -1
  374. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  375. package/dist/components/textarea/src/textarea-utils.js +61 -0
  376. package/dist/components/time-picker/index.d.ts +3 -2
  377. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  378. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  379. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  380. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  381. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  382. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  383. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  384. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  385. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  386. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  387. package/dist/components/toaster/src/RsToaster.css +156 -203
  388. package/dist/components/toaster/src/RsToaster.d.ts +33 -3
  389. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  390. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  391. package/dist/components/toaster/src/toast-store.js +177 -0
  392. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  393. package/dist/components/toaster/src/toast-utils.js +86 -0
  394. package/dist/components/toolbar/index.d.ts +1 -1
  395. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  396. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  397. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  398. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  399. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  400. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  401. package/dist/components/tooltip/index.d.ts +1 -0
  402. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  403. package/dist/components/tooltip/src/RsTooltip.d.ts +39 -17
  404. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  405. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  406. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  407. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  408. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  409. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  410. package/dist/components/tree/index.d.ts +2 -2
  411. package/dist/components/tree/src/RsTree.css +84 -75
  412. package/dist/components/tree/src/RsTree.d.ts +23 -23
  413. package/dist/components/tree/src/RsTree.impl.js +292 -66
  414. package/dist/components/tree/src/RsTree.js +1 -1
  415. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  416. package/dist/components/tree/src/tree-utils.js +18 -4
  417. package/dist/components/tree-select/index.d.ts +2 -0
  418. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  419. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  420. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  421. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  422. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  423. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  424. package/dist/components/upload/index.d.ts +2 -1
  425. package/dist/components/upload/src/RsUpload.css +223 -75
  426. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  427. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  428. package/dist/components/upload/src/RsUpload.js +1 -1
  429. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  430. package/dist/components/upload/src/upload-utils.js +139 -9
  431. package/dist/components/virtual-list/index.d.ts +1 -1
  432. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  433. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  434. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  435. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  436. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  437. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  438. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  439. package/dist/composables/useRsLoadingBar.js +21 -5
  440. package/dist/composables/useRsTabsNav.d.ts +3 -1
  441. package/dist/composables/useRsTabsNav.js +96 -28
  442. package/dist/composables/useRsToast.d.ts +11 -13
  443. package/dist/composables/useRsToast.js +66 -17
  444. package/dist/index.d.ts +51 -32
  445. package/dist/index.js +20 -0
  446. package/dist/locale/apply.js +6 -1
  447. package/dist/locale/messages.js +174 -4
  448. package/dist/styles.css +1007 -980
  449. package/dist/theme/brand.example.css +3 -2
  450. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  451. package/package.json +2 -3
  452. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  453. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  454. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  455. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  456. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  457. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -1,32 +1,84 @@
1
1
  import type { RsComponentSize } from '../../../theme/types';
2
- import { type RsMentionOption } from './mentions-utils';
2
+ import { type RsMentionFilterOption, type RsMentionOption, type RsMentionOptionInput } from './mentions-utils';
3
+ /**
4
+ * RsMentions 模板 ref 请用此类型。
5
+ * 不要写 `InstanceType<typeof RsMentions>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
6
+ */
7
+ export interface RsMentionsExpose {
8
+ focus: () => void;
9
+ blur: () => void;
10
+ }
11
+ /** 模板 ref 实例:expose + 根节点 */
12
+ export type RsMentionsInstance = RsMentionsExpose & {
13
+ $el: HTMLElement;
14
+ };
15
+ export type { RsMentionFilterOption, RsMentionOption, RsMentionOptionInput };
3
16
  type __VLS_Props = {
4
- options?: readonly RsMentionOption[];
17
+ options?: ReadonlyArray<RsMentionOptionInput>;
5
18
  prefix?: string | string[];
6
19
  split?: string;
7
20
  rows?: number;
8
21
  placeholder?: string;
9
22
  disabled?: boolean;
23
+ readonly?: boolean;
10
24
  size?: RsComponentSize;
25
+ allowClear?: boolean;
26
+ filterOption?: RsMentionFilterOption;
27
+ debounce?: number;
28
+ emptyText?: string;
29
+ /** 远程搜索进行中。列表空时显示 loadingText。 */
30
+ loading?: boolean;
31
+ loadingText?: string;
32
+ id?: string;
33
+ name?: string;
34
+ /** 无障碍名称。旁边已有可见 label 时可省略。 */
35
+ ariaLabel?: string;
11
36
  };
12
37
  type __VLS_ModelProps = {
13
38
  modelValue?: string;
14
39
  };
15
40
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
16
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
41
+ declare var __VLS_12: {}, __VLS_14: {
42
+ option: RsMentionOption;
43
+ active: boolean;
44
+ };
45
+ type __VLS_Slots = {} & {
46
+ empty?: (props: typeof __VLS_12) => any;
47
+ } & {
48
+ option?: (props: typeof __VLS_14) => any;
49
+ };
50
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsMentionsExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
51
  search: (query: string) => any;
18
52
  select: (value: string) => any;
53
+ blur: (event: FocusEvent) => any;
54
+ focus: (event: FocusEvent) => any;
55
+ clear: () => any;
19
56
  "update:modelValue": (value: string) => any;
20
57
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
58
  onSearch?: ((query: string) => any) | undefined;
22
59
  onSelect?: ((value: string) => any) | undefined;
60
+ onBlur?: ((event: FocusEvent) => any) | undefined;
61
+ onFocus?: ((event: FocusEvent) => any) | undefined;
62
+ onClear?: (() => any) | undefined;
23
63
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
24
64
  }>, {
25
65
  split: string;
26
66
  disabled: boolean;
27
- options: readonly RsMentionOption[];
28
- prefix: string | string[];
67
+ loading: boolean;
68
+ readonly: boolean;
69
+ allowClear: boolean;
70
+ emptyText: string;
29
71
  rows: number;
72
+ options: ReadonlyArray<RsMentionOptionInput>;
73
+ prefix: string | string[];
74
+ filterOption: RsMentionFilterOption;
75
+ debounce: number;
30
76
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
77
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
78
  declare const _default: typeof __VLS_export;
32
79
  export default _default;
80
+ type __VLS_WithSlots<T, S> = T & {
81
+ new (): {
82
+ $slots: S;
83
+ };
84
+ };
@@ -1,25 +1,46 @@
1
+ import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
1
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
3
+ import RsIcon_default from "../../icon/src/RsIcon.js";
4
+ import { useRsFormContext, useRsFormField } from "../../form/src/form-utils.js";
2
5
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
3
- import { applyMention, createTextareaCaretMeter, filterMentionOptions, findActiveMention, placeMentionPopup, resolveMentionPrefixes, stepMentionIndex } from "./mentions-utils.js";
4
- import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, renderList, toDisplayString, unref, useId, useModel, vModelText, watch, withDirectives, withModifiers } from "vue";
6
+ import { applyMention, createTextareaCaretMeter, filterMentionOptions, findActiveMention, normalizeRsMentionOptions, placeMentionPopup, resolveMentionPrefixes, stepMentionIndex } from "./mentions-utils.js";
7
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onUnmounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useAttrs, useId, useModel, vModelText, watch, withDirectives, withModifiers } from "vue";
5
8
  //#region src/components/mentions/src/RsMentions.vue?vue&type=script&setup=true&lang.ts
6
9
  var _hoisted_1 = [
10
+ "id",
11
+ "name",
7
12
  "rows",
8
13
  "placeholder",
9
14
  "disabled",
15
+ "readonly",
16
+ "aria-label",
10
17
  "aria-expanded",
11
18
  "aria-controls",
12
19
  "aria-activedescendant"
13
20
  ];
14
- var _hoisted_2 = ["id", "aria-label"];
21
+ var _hoisted_2 = ["aria-label"];
15
22
  var _hoisted_3 = [
23
+ "id",
24
+ "aria-label",
25
+ "aria-busy",
26
+ "data-rs-theme",
27
+ "data-placement"
28
+ ];
29
+ var _hoisted_4 = {
30
+ key: 0,
31
+ class: "rs-mentions__item rs-mentions__item--empty",
32
+ role: "presentation"
33
+ };
34
+ var _hoisted_5 = [
16
35
  "id",
17
36
  "aria-selected",
18
37
  "aria-disabled",
38
+ "title",
19
39
  "onMousedown"
20
40
  ];
21
41
  var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
22
42
  name: "RsMentions",
43
+ inheritAttrs: false,
23
44
  __name: "RsMentions",
24
45
  props: /*@__PURE__*/ mergeModels({
25
46
  options: { default: () => [] },
@@ -31,19 +52,51 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
31
52
  type: Boolean,
32
53
  default: false
33
54
  },
34
- size: {}
55
+ readonly: {
56
+ type: Boolean,
57
+ default: false
58
+ },
59
+ size: {},
60
+ allowClear: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ filterOption: {
65
+ type: [Boolean, Function],
66
+ default: true
67
+ },
68
+ debounce: { default: 0 },
69
+ emptyText: { default: "" },
70
+ loading: {
71
+ type: Boolean,
72
+ default: false
73
+ },
74
+ loadingText: {},
75
+ id: {},
76
+ name: {},
77
+ ariaLabel: {}
35
78
  }, {
36
79
  "modelValue": { default: "" },
37
80
  "modelModifiers": {}
38
81
  }),
39
- emits: /*@__PURE__*/ mergeModels(["select", "search"], ["update:modelValue"]),
40
- setup(__props, { emit: __emit }) {
82
+ emits: /*@__PURE__*/ mergeModels([
83
+ "select",
84
+ "search",
85
+ "clear",
86
+ "focus",
87
+ "blur"
88
+ ], ["update:modelValue"]),
89
+ setup(__props, { expose: __expose, emit: __emit }) {
41
90
  const model = useModel(__props, "modelValue");
42
91
  const props = __props;
43
92
  const emit = __emit;
44
93
  const { t } = useRsI18n();
94
+ const attrs = useAttrs();
95
+ const formContext = useRsFormContext();
45
96
  const resolvedSize = useResolvedRsComponentSize(() => props.size);
46
97
  const listId = useId();
98
+ const autoId = useId();
99
+ const inputId = computed(() => props.id || autoId);
47
100
  const areaRef = ref(null);
48
101
  const listRef = ref(null);
49
102
  const cursor = ref(0);
@@ -55,13 +108,45 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
55
108
  const highlight = ref(0);
56
109
  const dismissed = ref(false);
57
110
  const lastSearch = ref(null);
111
+ const composing = ref(false);
112
+ const searchTimer = ref();
58
113
  const prefixes = computed(() => resolveMentionPrefixes(props.prefix));
59
114
  const meter = createTextareaCaretMeter();
60
- const active = computed(() => dismissed.value ? null : findActiveMention(model.value, cursor.value, prefixes.value, props.split));
61
- const suggestions = computed(() => active.value ? filterMentionOptions(props.options, active.value.query) : []);
62
- const open = computed(() => Boolean(active.value && suggestions.value.length));
63
- const activeOption = computed(() => suggestions.value[highlight.value]);
64
- const activeOptionId = computed(() => open.value && activeOption.value ? `${listId}-${activeOption.value.value}` : void 0);
115
+ /** 面板挂到 body 后仍跟输入框最近的 data-rs-theme(深色岛 / 混主题页)。 */
116
+ const panelTheme = ref();
117
+ function syncPanelTheme() {
118
+ const el = areaRef.value;
119
+ if (!el) {
120
+ panelTheme.value = void 0;
121
+ return;
122
+ }
123
+ const themed = el.closest("[data-rs-theme]");
124
+ panelTheme.value = themed instanceof HTMLElement ? themed.dataset.rsTheme : void 0;
125
+ }
126
+ const resolvedDisabled = computed(() => props.disabled || Boolean(formContext?.disabled.value));
127
+ const iconPx = computed(() => RS_COMPONENT_SIZE_ICON_PX[resolvedSize.value]);
128
+ const normalized = computed(() => normalizeRsMentionOptions(props.options));
129
+ const active = computed(() => dismissed.value || resolvedDisabled.value || props.readonly ? null : findActiveMention(model.value, cursor.value, prefixes.value, props.split));
130
+ const suggestions = computed(() => active.value ? filterMentionOptions(normalized.value, active.value.query, props.filterOption) : []);
131
+ const suggestionViews = computed(() => suggestions.value.map((option, index) => ({
132
+ option,
133
+ index,
134
+ optionId: `${listId}-${index}-${String(option.value)}`
135
+ })));
136
+ const open = computed(() => Boolean(active.value));
137
+ const activeOption = computed(() => {
138
+ const option = suggestions.value[highlight.value];
139
+ return option && !option.disabled ? option : void 0;
140
+ });
141
+ const activeOptionId = computed(() => {
142
+ if (!open.value || !activeOption.value) return void 0;
143
+ return suggestionViews.value[highlight.value]?.optionId;
144
+ });
145
+ const showClear = computed(() => Boolean(props.allowClear && model.value && !resolvedDisabled.value && !props.readonly));
146
+ const listStatusText = computed(() => {
147
+ if (props.loading && !suggestions.value.length) return props.loadingText || t("select.loading");
148
+ return props.emptyText || t("select.empty");
149
+ });
65
150
  function viewportCaret() {
66
151
  const el = areaRef.value;
67
152
  const mention = active.value;
@@ -80,7 +165,7 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
80
165
  const list = listRef.value?.getBoundingClientRect();
81
166
  popup.value = placeMentionPopup(caret, {
82
167
  width: list?.width || 160,
83
- height: list?.height || Math.min(192, suggestions.value.length * 32)
168
+ height: list?.height || Math.min(192, Math.max(1, suggestions.value.length) * 32)
84
169
  }, {
85
170
  width: window.innerWidth,
86
171
  height: window.innerHeight
@@ -88,13 +173,23 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
88
173
  }
89
174
  let frame = 0;
90
175
  function requestPlace() {
176
+ if (typeof window === "undefined") return;
91
177
  if (frame) return;
92
178
  frame = window.requestAnimationFrame(() => {
93
179
  frame = 0;
94
180
  placePopup();
95
181
  });
96
182
  }
97
- function syncCursor(emitSearch, keepDismissed = false) {
183
+ function emitSearch(query) {
184
+ if (searchTimer.value) clearTimeout(searchTimer.value);
185
+ const wait = props.debounce ?? 0;
186
+ if (wait <= 0) {
187
+ emit("search", query);
188
+ return;
189
+ }
190
+ searchTimer.value = setTimeout(() => emit("search", query), wait);
191
+ }
192
+ function syncCursor(emitSearchEvent, keepDismissed = false) {
98
193
  const el = areaRef.value;
99
194
  cursor.value = el?.selectionStart ?? model.value.length;
100
195
  if (!keepDismissed) dismissed.value = false;
@@ -103,14 +198,14 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
103
198
  lastSearch.value = null;
104
199
  return;
105
200
  }
106
- if (emitSearch && mention.query !== lastSearch.value) {
201
+ if (emitSearchEvent && mention.query !== lastSearch.value) {
107
202
  lastSearch.value = mention.query;
108
- emit("search", mention.query);
203
+ emitSearch(mention.query);
109
204
  }
110
- requestPlace();
205
+ if (!keepDismissed) requestPlace();
111
206
  }
112
207
  function pick(option) {
113
- if (!active.value || option.disabled) return;
208
+ if (!active.value || option.disabled || resolvedDisabled.value || props.readonly) return;
114
209
  const next = applyMention(model.value, active.value, option.value, props.split);
115
210
  model.value = next.text;
116
211
  emit("select", option.value);
@@ -124,6 +219,7 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
124
219
  });
125
220
  }
126
221
  function onKeydown(event) {
222
+ if (event.isComposing || composing.value || resolvedDisabled.value || props.readonly) return;
127
223
  if (!open.value) return;
128
224
  if (event.key === "ArrowDown") {
129
225
  event.preventDefault();
@@ -136,8 +232,9 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
136
232
  return;
137
233
  }
138
234
  if (event.key === "Enter") {
235
+ if (!activeOption.value) return;
139
236
  event.preventDefault();
140
- if (activeOption.value) pick(activeOption.value);
237
+ pick(activeOption.value);
141
238
  return;
142
239
  }
143
240
  if (event.key === "Escape") {
@@ -160,81 +257,203 @@ var RsMentions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
160
257
  pick(activeOption.value);
161
258
  }
162
259
  }
260
+ function onCompositionStart() {
261
+ composing.value = true;
262
+ }
263
+ function onCompositionEnd() {
264
+ composing.value = false;
265
+ syncCursor(true);
266
+ }
267
+ function onClear() {
268
+ model.value = "";
269
+ emit("clear");
270
+ dismissed.value = true;
271
+ nextTick(() => areaRef.value?.focus());
272
+ }
273
+ function onFocus(event) {
274
+ emit("focus", event);
275
+ syncCursor(true);
276
+ }
277
+ let blurTimer = 0;
278
+ function onBlur(event) {
279
+ emit("blur", event);
280
+ if (typeof window === "undefined") return;
281
+ if (blurTimer) window.clearTimeout(blurTimer);
282
+ blurTimer = window.setTimeout(() => {
283
+ blurTimer = 0;
284
+ if (document.activeElement === areaRef.value) return;
285
+ dismissed.value = true;
286
+ }, 0);
287
+ }
288
+ function onDocPointerDown(event) {
289
+ const target = event.target;
290
+ if (!target) return;
291
+ if (areaRef.value?.contains(target)) return;
292
+ if (listRef.value?.contains(target)) return;
293
+ dismissed.value = true;
294
+ }
295
+ function scrollActiveIntoView() {
296
+ if (!open.value || !activeOptionId.value) return;
297
+ document.getElementById(activeOptionId.value)?.scrollIntoView({ block: "nearest" });
298
+ }
163
299
  watch(suggestions, (list) => {
164
300
  highlight.value = list.findIndex((item) => !item.disabled);
165
301
  if (highlight.value < 0) highlight.value = 0;
166
- requestPlace();
302
+ if (open.value) requestPlace();
167
303
  });
304
+ watch(highlight, () => {
305
+ nextTick(scrollActiveIntoView);
306
+ });
307
+ let overlayBound = false;
308
+ function attachOverlay() {
309
+ if (overlayBound || typeof window === "undefined" || typeof document === "undefined") return;
310
+ overlayBound = true;
311
+ document.addEventListener("pointerdown", onDocPointerDown);
312
+ window.addEventListener("resize", onWindowChange);
313
+ window.addEventListener("scroll", onWindowChange, true);
314
+ }
315
+ function detachOverlay() {
316
+ if (frame && typeof window !== "undefined") {
317
+ window.cancelAnimationFrame(frame);
318
+ frame = 0;
319
+ }
320
+ if (!overlayBound) return;
321
+ overlayBound = false;
322
+ if (typeof document !== "undefined") document.removeEventListener("pointerdown", onDocPointerDown);
323
+ if (typeof window !== "undefined") {
324
+ window.removeEventListener("resize", onWindowChange);
325
+ window.removeEventListener("scroll", onWindowChange, true);
326
+ }
327
+ }
168
328
  watch(open, (isOpen) => {
169
- if (isOpen) nextTick(() => requestPlace());
329
+ if (isOpen) {
330
+ attachOverlay();
331
+ nextTick(() => {
332
+ syncPanelTheme();
333
+ requestPlace();
334
+ });
335
+ return;
336
+ }
337
+ detachOverlay();
170
338
  });
171
339
  function onWindowChange() {
172
340
  if (open.value) requestPlace();
173
341
  }
174
- onMounted(() => {
175
- window.addEventListener("resize", onWindowChange);
176
- window.addEventListener("scroll", onWindowChange, true);
342
+ function setFieldValue(value) {
343
+ model.value = value == null ? "" : String(value);
344
+ }
345
+ useRsFormField(() => ({
346
+ get name() {
347
+ return props.name;
348
+ },
349
+ getValue: () => model.value,
350
+ setValue: setFieldValue
351
+ }));
352
+ function focus() {
353
+ areaRef.value?.focus();
354
+ }
355
+ function blur() {
356
+ areaRef.value?.blur();
357
+ }
358
+ __expose({
359
+ focus,
360
+ blur
177
361
  });
178
362
  onUnmounted(() => {
179
- if (frame) window.cancelAnimationFrame(frame);
363
+ detachOverlay();
364
+ if (searchTimer.value) clearTimeout(searchTimer.value);
365
+ if (blurTimer && typeof window !== "undefined") window.clearTimeout(blurTimer);
180
366
  meter.dispose();
181
- window.removeEventListener("resize", onWindowChange);
182
- window.removeEventListener("scroll", onWindowChange, true);
183
367
  });
184
368
  return (_ctx, _cache) => {
185
- return openBlock(), createElementBlock("div", { class: normalizeClass(["rs-mentions", `rs-mentions--${unref(resolvedSize)}`]) }, [withDirectives(createElementVNode("textarea", {
186
- ref_key: "areaRef",
187
- ref: areaRef,
188
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
189
- class: "rs-mentions__input",
190
- rows: __props.rows,
191
- placeholder: __props.placeholder ?? unref(t)("mentions.placeholder"),
192
- disabled: __props.disabled,
193
- role: "combobox",
194
- "aria-autocomplete": "list",
195
- "aria-haspopup": "listbox",
196
- "aria-expanded": open.value ? "true" : "false",
197
- "aria-controls": open.value ? unref(listId) : void 0,
198
- "aria-activedescendant": activeOptionId.value,
199
- onKeydown,
200
- onKeyup: _cache[1] || (_cache[1] = ($event) => syncCursor(true, [
201
- "Escape",
202
- "Enter",
203
- "Tab",
204
- "ArrowUp",
205
- "ArrowDown",
206
- "Home",
207
- "End"
208
- ].includes($event.key))),
209
- onClick: _cache[2] || (_cache[2] = ($event) => syncCursor(true)),
210
- onInput: _cache[3] || (_cache[3] = ($event) => syncCursor(true)),
211
- onScroll: _cache[4] || (_cache[4] = ($event) => syncCursor(false, true))
212
- }, null, 40, _hoisted_1), [[vModelText, model.value]]), (openBlock(), createBlock(Teleport, { to: "body" }, [open.value ? (openBlock(), createElementBlock("ul", {
213
- key: 0,
214
- id: unref(listId),
215
- ref_key: "listRef",
216
- ref: listRef,
217
- class: "rs-mentions__list",
218
- role: "listbox",
219
- "aria-label": unref(t)("mentions.suggestions"),
220
- style: normalizeStyle({
221
- top: `${popup.value.top}px`,
222
- left: `${popup.value.left}px`
223
- })
224
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(suggestions.value, (opt, index) => {
225
- return openBlock(), createElementBlock("li", {
226
- id: `${unref(listId)}-${opt.value}`,
227
- key: opt.value,
228
- role: "option",
229
- class: normalizeClass(["rs-mentions__item", {
230
- "rs-mentions__item--disabled": opt.disabled,
231
- "rs-mentions__item--active": index === highlight.value
232
- }]),
233
- "aria-selected": index === highlight.value,
234
- "aria-disabled": opt.disabled ? "true" : void 0,
235
- onMousedown: withModifiers(($event) => pick(opt), ["prevent"])
236
- }, toDisplayString(opt.label), 43, _hoisted_3);
237
- }), 128))], 12, _hoisted_2)) : createCommentVNode("", true)]))], 2);
369
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["rs-mentions", [`rs-mentions--${unref(resolvedSize)}`, {
370
+ "rs-mentions--clearable": showClear.value,
371
+ "rs-mentions--disabled": resolvedDisabled.value,
372
+ "rs-mentions--readonly": __props.readonly
373
+ }]]) }, [
374
+ withDirectives(createElementVNode("textarea", mergeProps({
375
+ id: inputId.value,
376
+ ref_key: "areaRef",
377
+ ref: areaRef
378
+ }, unref(attrs), {
379
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
380
+ class: "rs-mentions__input",
381
+ name: __props.name,
382
+ rows: __props.rows,
383
+ placeholder: __props.placeholder ?? unref(t)("mentions.placeholder"),
384
+ disabled: resolvedDisabled.value,
385
+ readonly: __props.readonly,
386
+ "aria-label": __props.ariaLabel,
387
+ autocomplete: "off",
388
+ role: "combobox",
389
+ "aria-autocomplete": "list",
390
+ "aria-haspopup": "listbox",
391
+ "aria-expanded": open.value ? "true" : "false",
392
+ "aria-controls": open.value ? unref(listId) : void 0,
393
+ "aria-activedescendant": activeOptionId.value,
394
+ onKeydown,
395
+ onKeyup: _cache[1] || (_cache[1] = ($event) => syncCursor(true, [
396
+ "Escape",
397
+ "Enter",
398
+ "Tab",
399
+ "ArrowUp",
400
+ "ArrowDown",
401
+ "Home",
402
+ "End"
403
+ ].includes($event.key))),
404
+ onClick: _cache[2] || (_cache[2] = ($event) => syncCursor(true)),
405
+ onInput: _cache[3] || (_cache[3] = ($event) => syncCursor(true)),
406
+ onScroll: _cache[4] || (_cache[4] = ($event) => syncCursor(false, true)),
407
+ onFocus,
408
+ onBlur,
409
+ onCompositionstart: onCompositionStart,
410
+ onCompositionend: onCompositionEnd
411
+ }), null, 16, _hoisted_1), [[vModelText, model.value]]),
412
+ showClear.value ? (openBlock(), createElementBlock("button", {
413
+ key: 0,
414
+ type: "button",
415
+ class: "rs-mentions__clear",
416
+ "aria-label": unref(t)("select.clear"),
417
+ onPointerdown: _cache[5] || (_cache[5] = withModifiers(() => {}, ["prevent"])),
418
+ onClick: onClear
419
+ }, [createVNode(RsIcon_default, {
420
+ name: "x",
421
+ size: iconPx.value
422
+ }, null, 8, ["size"])], 40, _hoisted_2)) : createCommentVNode("", true),
423
+ (openBlock(), createBlock(Teleport, { to: "body" }, [open.value ? (openBlock(), createElementBlock("ul", {
424
+ key: 0,
425
+ id: unref(listId),
426
+ ref_key: "listRef",
427
+ ref: listRef,
428
+ class: "rs-mentions__list",
429
+ role: "listbox",
430
+ "aria-label": unref(t)("mentions.suggestions"),
431
+ "aria-busy": __props.loading ? "true" : void 0,
432
+ "data-rs-theme": panelTheme.value,
433
+ "data-placement": popup.value.placement,
434
+ style: normalizeStyle({
435
+ top: `${popup.value.top}px`,
436
+ left: `${popup.value.left}px`
437
+ })
438
+ }, [!suggestions.value.length ? (openBlock(), createElementBlock("li", _hoisted_4, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(listStatusText.value), 1)], true)])) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(suggestionViews.value, (row) => {
439
+ return openBlock(), createElementBlock("li", {
440
+ id: row.optionId,
441
+ key: row.optionId,
442
+ role: "option",
443
+ class: normalizeClass(["rs-mentions__item", {
444
+ "rs-mentions__item--disabled": row.option.disabled,
445
+ "rs-mentions__item--active": row.index === highlight.value
446
+ }]),
447
+ "aria-selected": row.index === highlight.value,
448
+ "aria-disabled": row.option.disabled ? "true" : void 0,
449
+ title: row.option.title,
450
+ onMousedown: withModifiers(($event) => pick(row.option), ["prevent"])
451
+ }, [renderSlot(_ctx.$slots, "option", {
452
+ option: row.option,
453
+ active: row.index === highlight.value
454
+ }, () => [createTextVNode(toDisplayString(row.option.label), 1)], true)], 42, _hoisted_5);
455
+ }), 128))], 12, _hoisted_3)) : createCommentVNode("", true)]))
456
+ ], 2);
238
457
  };
239
458
  }
240
459
  });
@@ -1,10 +1,8 @@
1
1
  import './RsMentions.css'
2
- import './RsMentions-1.css'
3
2
  import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
4
3
  import RsMentions_vue_vue_type_script_setup_true_lang_default from "./RsMentions.impl.js";
5
4
 
6
-
7
5
  //#region src/components/mentions/src/RsMentions.vue
8
- var RsMentions_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsMentions_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3b6a5d22"]]);
6
+ var RsMentions_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsMentions_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c5c1f2dc"]]);
9
7
  //#endregion
10
8
  export { RsMentions_default as default };
@@ -2,7 +2,11 @@ export interface RsMentionOption {
2
2
  label: string;
3
3
  value: string;
4
4
  disabled?: boolean;
5
+ title?: string;
5
6
  }
7
+ export type RsMentionOptionInput = string | RsMentionOption;
8
+ export type RsMentionFilterOption = boolean | ((query: string, option: RsMentionOption) => boolean);
9
+ export declare function normalizeRsMentionOptions(options: ReadonlyArray<RsMentionOptionInput> | undefined): RsMentionOption[];
6
10
  export interface RsMentionActive {
7
11
  prefix: string;
8
12
  query: string;
@@ -43,4 +47,4 @@ export interface RsTextareaCaretMeter {
43
47
  export declare function createTextareaCaretMeter(): RsTextareaCaretMeter;
44
48
  /** 相对 textarea 内容区的光标坐标(已扣滚动)。测试 / 单次调用用;热路径请复用 meter。 */
45
49
  export declare function measureTextareaCaret(textarea: HTMLTextAreaElement, index: number): RsMentionCaretBox;
46
- export declare function filterMentionOptions(options: readonly RsMentionOption[], query: string): RsMentionOption[];
50
+ export declare function filterMentionOptions(options: readonly RsMentionOption[], query: string, filterOption?: RsMentionFilterOption): RsMentionOption[];