niuma-ui 2.0.2 → 2.0.4

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 (242) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +2 -0
  3. package/README.zh-CN.md +2 -0
  4. package/dist/components/_shared/src/reka.d.ts +1 -1
  5. package/dist/components/_shared/src/reka.js +2 -2
  6. package/dist/components/anchor/index.d.ts +1 -1
  7. package/dist/components/anchor/src/RsAnchor.css +63 -32
  8. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  9. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  10. package/dist/components/anchor/src/RsAnchor.js +1 -1
  11. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  12. package/dist/components/anchor/src/anchor-utils.js +81 -19
  13. package/dist/components/auto-complete/index.d.ts +2 -0
  14. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  15. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  16. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  17. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  18. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  19. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  20. package/dist/components/avatar/index.d.ts +1 -0
  21. package/dist/components/avatar/src/RsAvatar.css +36 -19
  22. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  23. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  24. package/dist/components/avatar/src/RsAvatar.js +2 -1
  25. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  26. package/dist/components/avatar/src/avatar-utils.js +41 -3
  27. package/dist/components/badge/index.d.ts +1 -0
  28. package/dist/components/badge/src/RsBadge.css +61 -8
  29. package/dist/components/badge/src/RsBadge.d.ts +19 -3
  30. package/dist/components/badge/src/RsBadge.impl.js +46 -3
  31. package/dist/components/badge/src/RsBadge.js +1 -1
  32. package/dist/components/badge/src/badge-utils.d.ts +11 -0
  33. package/dist/components/badge/src/badge-utils.js +32 -0
  34. package/dist/components/breadcrumb/index.d.ts +1 -1
  35. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  36. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  37. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  38. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  39. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  40. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  41. package/dist/components/button/src/RsButton.css +87 -71
  42. package/dist/components/button/src/RsButton.d.ts +7 -3
  43. package/dist/components/button/src/RsButton.impl.js +43 -31
  44. package/dist/components/button/src/RsButton.js +1 -1
  45. package/dist/components/button/src/button-utils.d.ts +17 -0
  46. package/dist/components/button/src/button-utils.js +14 -1
  47. package/dist/components/calendar-grid/index.d.ts +2 -0
  48. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  49. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  50. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  51. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  52. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  53. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  54. package/dist/components/card/index.d.ts +1 -1
  55. package/dist/components/card/src/RsCard.css +108 -98
  56. package/dist/components/card/src/RsCard.d.ts +3 -12
  57. package/dist/components/card/src/RsCard.impl.js +29 -25
  58. package/dist/components/card/src/RsCard.js +2 -1
  59. package/dist/components/card/src/card-utils.d.ts +25 -0
  60. package/dist/components/card/src/card-utils.js +10 -0
  61. package/dist/components/cascader/index.d.ts +1 -0
  62. package/dist/components/cascader/src/RsCascader.css +175 -30
  63. package/dist/components/cascader/src/RsCascader.d.ts +14 -2
  64. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  65. package/dist/components/cascader/src/RsCascader.js +1 -1
  66. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  67. package/dist/components/cascader/src/cascader-utils.js +8 -1
  68. package/dist/components/checkbox/index.d.ts +1 -0
  69. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  70. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  71. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  72. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  73. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  74. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  75. package/dist/components/container/index.d.ts +1 -1
  76. package/dist/components/container/src/RsContainer.css +11 -11
  77. package/dist/components/container/src/RsContainer.d.ts +2 -12
  78. package/dist/components/container/src/RsContainer.impl.js +10 -57
  79. package/dist/components/container/src/RsContainer.js +1 -1
  80. package/dist/components/container/src/container-utils.d.ts +23 -0
  81. package/dist/components/container/src/container-utils.js +51 -0
  82. package/dist/components/date-picker/index.d.ts +4 -2
  83. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  84. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  85. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  86. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  87. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  88. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  89. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  90. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  91. package/dist/components/divider/index.d.ts +1 -0
  92. package/dist/components/divider/src/RsDivider.css +37 -22
  93. package/dist/components/divider/src/RsDivider.d.ts +4 -2
  94. package/dist/components/divider/src/RsDivider.impl.js +26 -12
  95. package/dist/components/divider/src/RsDivider.js +1 -1
  96. package/dist/components/divider/src/divider-utils.d.ts +4 -0
  97. package/dist/components/dynamic-tags/index.d.ts +1 -1
  98. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  99. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +59 -18
  100. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  101. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  102. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  103. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  104. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  105. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  106. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  107. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  108. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  109. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  110. package/dist/components/form/index.d.ts +1 -0
  111. package/dist/components/form/src/RsForm.css +15 -12
  112. package/dist/components/form/src/RsForm.d.ts +20 -22
  113. package/dist/components/form/src/RsForm.impl.js +33 -20
  114. package/dist/components/form/src/RsForm.js +1 -1
  115. package/dist/components/form/src/form-utils.d.ts +7 -0
  116. package/dist/components/form/src/form-utils.js +28 -1
  117. package/dist/components/icon/src/RsIcon.css +9 -4
  118. package/dist/components/icon/src/RsIcon.d.ts +4 -3
  119. package/dist/components/icon/src/RsIcon.impl.js +9 -32
  120. package/dist/components/icon/src/RsIcon.js +1 -1
  121. package/dist/components/icon/src/icon-utils.d.ts +17 -0
  122. package/dist/components/icon/src/icon-utils.js +39 -0
  123. package/dist/components/input/index.d.ts +1 -1
  124. package/dist/components/input/src/RsInput.css +78 -260
  125. package/dist/components/input/src/RsInput.d.ts +5 -3
  126. package/dist/components/input/src/RsInput.impl.js +8 -16
  127. package/dist/components/input/src/RsInput.js +1 -1
  128. package/dist/components/input/src/input-utils.d.ts +11 -0
  129. package/dist/components/input/src/input-utils.js +22 -0
  130. package/dist/components/input-number/index.d.ts +1 -0
  131. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  132. package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
  133. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  134. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  135. package/dist/components/label/src/RsLabel.css +30 -11
  136. package/dist/components/label/src/RsLabel.d.ts +18 -1
  137. package/dist/components/label/src/RsLabel.impl.js +63 -10
  138. package/dist/components/label/src/RsLabel.js +1 -1
  139. package/dist/components/label/src/label-utils.d.ts +6 -0
  140. package/dist/components/label/src/label-utils.js +16 -0
  141. package/dist/components/link/index.d.ts +1 -0
  142. package/dist/components/link/src/RsLink.css +58 -17
  143. package/dist/components/link/src/RsLink.d.ts +12 -4
  144. package/dist/components/link/src/RsLink.impl.js +26 -25
  145. package/dist/components/link/src/RsLink.js +2 -1
  146. package/dist/components/link/src/link-utils.d.ts +9 -0
  147. package/dist/components/link/src/link-utils.js +15 -0
  148. package/dist/components/loading/src/RsLoading.d.ts +2 -2
  149. package/dist/components/mentions/index.d.ts +2 -1
  150. package/dist/components/mentions/src/RsMentions.css +119 -3
  151. package/dist/components/mentions/src/RsMentions.d.ts +56 -4
  152. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  153. package/dist/components/mentions/src/RsMentions.js +1 -3
  154. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  155. package/dist/components/mentions/src/mentions-utils.js +28 -9
  156. package/dist/components/popover/src/RsPopover.d.ts +1 -1
  157. package/dist/components/radio/index.d.ts +1 -1
  158. package/dist/components/radio/src/RsRadio.css +7 -6
  159. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  160. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  161. package/dist/components/radio/src/RsRadio.js +2 -1
  162. package/dist/components/radio/src/RsRadioItem.css +61 -44
  163. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  164. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  165. package/dist/components/radio/src/RsRadioItem.js +2 -1
  166. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  167. package/dist/components/radio/src/radio-utils.js +15 -1
  168. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  169. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  170. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  171. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  172. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  173. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  174. package/dist/components/select/index.d.ts +1 -0
  175. package/dist/components/select/src/RsSelect.css +54 -42
  176. package/dist/components/select/src/RsSelect.d.ts +19 -2
  177. package/dist/components/select/src/RsSelect.impl.js +727 -312
  178. package/dist/components/select/src/RsSelect.js +1 -1
  179. package/dist/components/select/src/select-utils.d.ts +4 -2
  180. package/dist/components/select/src/select-utils.js +8 -3
  181. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  182. package/dist/components/select/src/use-rs-select.js +23 -17
  183. package/dist/components/switch/index.d.ts +2 -1
  184. package/dist/components/switch/src/RsSwitch.css +36 -18
  185. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  186. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  187. package/dist/components/switch/src/RsSwitch.js +2 -1
  188. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  189. package/dist/components/switch/src/switch-utils.js +9 -0
  190. package/dist/components/tag/index.d.ts +1 -1
  191. package/dist/components/tag/src/RsTag.css +42 -38
  192. package/dist/components/tag/src/RsTag.d.ts +3 -2
  193. package/dist/components/tag/src/RsTag.impl.js +18 -9
  194. package/dist/components/tag/src/RsTag.js +1 -1
  195. package/dist/components/tag/src/tag-utils.d.ts +8 -0
  196. package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
  197. package/dist/components/textarea/src/RsTextarea.css +23 -23
  198. package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
  199. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  200. package/dist/components/textarea/src/RsTextarea.js +1 -1
  201. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  202. package/dist/components/textarea/src/textarea-utils.js +61 -0
  203. package/dist/components/time-picker/index.d.ts +3 -2
  204. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  205. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  206. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  207. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  208. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  209. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  210. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  211. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  212. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  213. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  214. package/dist/components/toaster/src/RsToaster.d.ts +1 -1
  215. package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
  216. package/dist/components/tree/src/RsTree.d.ts +3 -3
  217. package/dist/components/tree-select/index.d.ts +2 -0
  218. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  219. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  220. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  221. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  222. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  223. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  224. package/dist/components/upload/index.d.ts +2 -1
  225. package/dist/components/upload/src/RsUpload.css +223 -75
  226. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  227. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  228. package/dist/components/upload/src/RsUpload.js +1 -1
  229. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  230. package/dist/components/upload/src/upload-utils.js +139 -9
  231. package/dist/index.d.ts +24 -11
  232. package/dist/index.js +6 -0
  233. package/dist/locale/messages.js +46 -2
  234. package/dist/styles.css +518 -154
  235. package/dist/theme/brand.example.css +1 -1
  236. package/package.json +9 -8
  237. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  238. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  239. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  240. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  241. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  242. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -1,3 +1,4 @@
1
1
  export { default as RsUpload } from './src/RsUpload.js';
2
- export type { RsUploadValidationError, RsUploadValidationRules } from './src/upload-utils';
2
+ export type { RsUploadExpose, RsUploadInstance, } from './src/RsUpload.js';
3
+ export type { RsUploadBeforeRemove, RsUploadBeforeSelect, RsUploadCapture, RsUploadListType, RsUploadValidationError, RsUploadValidationRules, RsUploadVariant, } from './src/upload-utils';
3
4
  export { createUploadFileFromContent, downloadUploadFile, formatFileSize, isFileAccepted, mergeUploadFiles, removeUploadFileAt, resolveUploadFileIcon, validateUploadFiles, } from './src/upload-utils';
@@ -1,20 +1,42 @@
1
1
 
2
- .rs-upload[data-v-9d8ef208] {
2
+ .rs-upload[data-v-8c6abb48] {
3
+ position: relative;
3
4
  display: grid;
4
- gap: var(--rs-space-md);
5
+ gap: var(--rs-upload-gap);
6
+ }
7
+ .rs-upload--ssm[data-v-8c6abb48] {
8
+ --rs-upload-dropzone-min-height: 5.5rem;
9
+ --rs-upload-icon-box: 2.25rem;
10
+ --rs-upload-card-size: 5rem;
11
+ }
12
+ .rs-upload--sm[data-v-8c6abb48] {
13
+ --rs-upload-dropzone-min-height: 7rem;
14
+ --rs-upload-icon-box: 2.5rem;
15
+ --rs-upload-card-size: 5.75rem;
16
+ }
17
+ .rs-upload--md[data-v-8c6abb48] {
18
+ --rs-upload-dropzone-min-height: var(--rs-upload-dropzone-min-height-md);
19
+ --rs-upload-icon-box: var(--rs-upload-icon-box-md);
20
+ --rs-upload-card-size: var(--rs-upload-card-size-md);
5
21
  }
6
- .rs-upload__dropzone[data-v-9d8ef208] {
22
+ .rs-upload--lg[data-v-8c6abb48] {
23
+ --rs-upload-dropzone-min-height: 10rem;
24
+ --rs-upload-icon-box: 3.5rem;
25
+ --rs-upload-card-size: 7.5rem;
26
+ }
27
+ .rs-upload__dropzone[data-v-8c6abb48] {
7
28
  position: relative;
8
29
  display: flex;
9
30
  flex-direction: column;
10
31
  align-items: center;
11
32
  justify-content: center;
12
33
  gap: var(--rs-space-md);
13
- min-height: 8.5rem;
14
- padding: var(--rs-space-xl) var(--rs-space-lg);
15
- border: 1px dashed var(--rs-border);
16
- border-radius: var(--rs-radius);
17
- background: color-mix(in srgb, var(--rs-surface) 82%, var(--rs-bg));
34
+ min-height: var(--rs-upload-dropzone-min-height);
35
+ padding-block: var(--rs-space-xl);
36
+ padding-inline: var(--rs-space-lg);
37
+ border: 1px dashed var(--rs-upload-border);
38
+ border-radius: var(--rs-upload-radius);
39
+ background: var(--rs-upload-bg);
18
40
  cursor: pointer;
19
41
  text-align: center;
20
42
  transition:
@@ -22,33 +44,42 @@
22
44
  background var(--rs-transition-fast),
23
45
  box-shadow var(--rs-transition-fast);
24
46
  }
25
- .rs-upload__dropzone[data-v-9d8ef208]:hover:not(.rs-upload__dropzone--disabled),
26
- .rs-upload__dropzone--dragging[data-v-9d8ef208]:not(.rs-upload__dropzone--disabled) {
27
- border-color: color-mix(in srgb, var(--rs-primary) 55%, var(--rs-border));
28
- background: color-mix(in srgb, var(--rs-primary) 6%, var(--rs-surface));
47
+ .rs-upload__dropzone[data-v-8c6abb48]:hover:not(.rs-upload__dropzone--disabled),
48
+ .rs-upload__dropzone--dragging[data-v-8c6abb48]:not(.rs-upload__dropzone--disabled) {
49
+ border-color: var(--rs-upload-border-active);
50
+ background: var(--rs-upload-bg-active);
29
51
  }
30
- .rs-upload__dropzone[data-v-9d8ef208]:focus-within:not(.rs-upload__dropzone--disabled) {
52
+ .rs-upload__dropzone[data-v-8c6abb48]:focus-within:not(.rs-upload__dropzone--disabled) {
31
53
  border-color: var(--rs-focus-border, var(--rs-primary));
32
54
  box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
33
55
  }
34
- .rs-upload__dropzone--disabled[data-v-9d8ef208] {
35
- opacity: 0.38;
56
+ .rs-upload__dropzone--disabled[data-v-8c6abb48] {
57
+ opacity: var(--rs-upload-disabled-opacity);
36
58
  cursor: not-allowed;
37
59
  }
38
- .rs-upload__input[data-v-9d8ef208] {
60
+ .rs-upload__dropzone--tile[data-v-8c6abb48] {
61
+ min-height: var(--rs-upload-card-size);
62
+ inline-size: var(--rs-upload-card-size);
63
+ padding-block: var(--rs-space-sm);
64
+ padding-inline: var(--rs-space-sm);
65
+ }
66
+ .rs-upload__input[data-v-8c6abb48] {
39
67
  position: absolute;
40
- inset: 0;
41
- width: 100%;
42
- height: 100%;
43
- opacity: 0;
44
- cursor: inherit;
68
+ width: 1px;
69
+ height: 1px;
70
+ padding: 0;
71
+ margin: -1px;
72
+ overflow: hidden;
73
+ clip: rect(0, 0, 0, 0);
74
+ white-space: nowrap;
75
+ border: 0;
45
76
  }
46
- .rs-upload__icon[data-v-9d8ef208] {
77
+ .rs-upload__icon[data-v-8c6abb48] {
47
78
  display: flex;
48
79
  align-items: center;
49
80
  justify-content: center;
50
- width: 3rem;
51
- height: 3rem;
81
+ width: var(--rs-upload-icon-box);
82
+ height: var(--rs-upload-icon-box);
52
83
  border-radius: var(--rs-radius-full);
53
84
  border: 1px solid color-mix(in srgb, var(--rs-primary) 24%, var(--rs-border));
54
85
  background: var(--rs-primary-container);
@@ -58,39 +89,83 @@
58
89
  transform var(--rs-transition-fast),
59
90
  box-shadow var(--rs-transition-fast);
60
91
  }
61
- .rs-upload__dropzone:hover:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-9d8ef208],
62
- .rs-upload__dropzone--dragging:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-9d8ef208] {
92
+ .rs-upload__dropzone:hover:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-8c6abb48],
93
+ .rs-upload__dropzone--dragging:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-8c6abb48] {
63
94
  transform: translateY(-1px);
64
95
  box-shadow: var(--rs-shadow);
65
96
  }
66
- .rs-upload__text[data-v-9d8ef208] {
97
+ .rs-upload__text[data-v-8c6abb48] {
67
98
  display: grid;
68
- gap: 0.25rem;
69
- max-width: 20rem;
99
+ gap: var(--rs-space-xs);
100
+ max-inline-size: 20rem;
70
101
  }
71
- .rs-upload__label[data-v-9d8ef208] {
72
- color: var(--rs-text);
102
+ .rs-upload__label[data-v-8c6abb48] {
103
+ color: var(--rs-text-primary);
73
104
  font-size: var(--rs-font-size-sm);
74
105
  font-weight: var(--rs-font-weight-semibold);
75
106
  line-height: var(--rs-line-height-tight);
76
107
  }
77
- .rs-upload__hint[data-v-9d8ef208] {
78
- color: var(--rs-muted);
108
+ .rs-upload__hint[data-v-8c6abb48] {
109
+ color: var(--rs-text-secondary);
79
110
  font-size: var(--rs-font-size-xs);
80
111
  line-height: var(--rs-line-height-normal);
81
112
  }
82
- .rs-upload__list[data-v-9d8ef208] {
113
+ .rs-upload__trigger[data-v-8c6abb48] {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ gap: var(--rs-space-sm);
118
+ min-height: var(--rs-control-height-md);
119
+ padding-inline: var(--rs-space-md);
120
+ border: 1px solid var(--rs-border);
121
+ border-radius: var(--rs-radius-sm);
122
+ background: var(--rs-surface);
123
+ color: var(--rs-text-primary);
124
+ font-size: var(--rs-font-size-sm);
125
+ cursor: pointer;
126
+ transition:
127
+ border-color var(--rs-transition-fast),
128
+ background var(--rs-transition-fast),
129
+ box-shadow var(--rs-transition-fast);
130
+ }
131
+ .rs-upload--ssm .rs-upload__trigger[data-v-8c6abb48] {
132
+ min-height: var(--rs-control-height-ssm);
133
+ }
134
+ .rs-upload--sm .rs-upload__trigger[data-v-8c6abb48] {
135
+ min-height: var(--rs-control-height-sm);
136
+ }
137
+ .rs-upload--lg .rs-upload__trigger[data-v-8c6abb48] {
138
+ min-height: var(--rs-control-height-lg);
139
+ }
140
+ .rs-upload__trigger[data-v-8c6abb48]:hover:not(:disabled) {
141
+ border-color: var(--rs-upload-border-active);
142
+ background: var(--rs-upload-bg-active);
143
+ }
144
+ .rs-upload__trigger[data-v-8c6abb48]:focus-visible {
145
+ outline: none;
146
+ box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
147
+ }
148
+ .rs-upload__trigger[data-v-8c6abb48]:disabled {
149
+ opacity: var(--rs-upload-disabled-opacity);
150
+ cursor: not-allowed;
151
+ }
152
+ .rs-upload__list[data-v-8c6abb48] {
83
153
  display: grid;
84
154
  gap: var(--rs-space-xs);
85
155
  margin: 0;
86
156
  padding: 0;
87
157
  list-style: none;
88
158
  }
89
- .rs-upload__file[data-v-9d8ef208] {
159
+ .rs-upload--picture-card .rs-upload__list[data-v-8c6abb48] {
160
+ grid-template-columns: repeat(auto-fill, minmax(var(--rs-upload-card-size), 1fr));
161
+ gap: var(--rs-space-sm);
162
+ }
163
+ .rs-upload__file[data-v-8c6abb48] {
90
164
  display: flex;
91
165
  align-items: center;
92
166
  gap: var(--rs-space-sm);
93
- padding: var(--rs-space-sm) var(--rs-space-md);
167
+ padding-block: var(--rs-space-sm);
168
+ padding-inline: var(--rs-space-md);
94
169
  border: 1px solid var(--rs-border-subtle);
95
170
  border-radius: var(--rs-radius-sm);
96
171
  background: var(--rs-surface);
@@ -98,94 +173,167 @@
98
173
  border-color var(--rs-transition-fast),
99
174
  background var(--rs-transition-fast);
100
175
  }
101
- .rs-upload__file[data-v-9d8ef208]:hover {
176
+ .rs-upload__file[data-v-8c6abb48]:hover {
102
177
  border-color: var(--rs-border);
103
178
  background: color-mix(in srgb, var(--rs-surface-hover) 35%, var(--rs-surface));
104
179
  }
105
- .rs-upload__file-icon[data-v-9d8ef208] {
180
+ .rs-upload__file--card[data-v-8c6abb48] {
181
+ position: relative;
182
+ flex-direction: column;
183
+ align-items: stretch;
184
+ justify-content: flex-end;
185
+ min-block-size: var(--rs-upload-card-size);
186
+ padding: 0;
187
+ overflow: hidden;
188
+ }
189
+ .rs-upload__file--add[data-v-8c6abb48] {
190
+ border-style: dashed;
191
+ background: transparent;
192
+ }
193
+ .rs-upload__file--add[data-v-8c6abb48]:hover {
194
+ background: transparent;
195
+ }
196
+ .rs-upload__file-icon[data-v-8c6abb48] {
106
197
  display: flex;
107
198
  flex-shrink: 0;
108
199
  align-items: center;
109
200
  justify-content: center;
110
- width: 2rem;
111
- height: 2rem;
201
+ width: var(--rs-upload-file-icon-size);
202
+ height: var(--rs-upload-file-icon-size);
112
203
  border-radius: var(--rs-radius-sm);
113
204
  border: 1px solid var(--rs-border-subtle);
114
205
  background: color-mix(in srgb, var(--rs-bg) 55%, var(--rs-surface));
115
- color: var(--rs-muted);
206
+ color: var(--rs-text-secondary);
116
207
  }
117
- .rs-upload__file-icon--file-image[data-v-9d8ef208] {
118
- color: var(--rs-info, #2563eb);
208
+ .rs-upload__file-icon--file-image[data-v-8c6abb48],
209
+ .rs-upload__file-icon--file-music[data-v-8c6abb48],
210
+ .rs-upload__file-icon--file-video-camera[data-v-8c6abb48] {
211
+ color: var(--rs-info);
119
212
  }
120
- .rs-upload__file-icon--file-code[data-v-9d8ef208],
121
- .rs-upload__file-icon--file-braces[data-v-9d8ef208],
122
- .rs-upload__file-icon--file-terminal[data-v-9d8ef208] {
213
+ .rs-upload__file-icon--file-code[data-v-8c6abb48],
214
+ .rs-upload__file-icon--file-braces[data-v-8c6abb48],
215
+ .rs-upload__file-icon--file-terminal[data-v-8c6abb48] {
123
216
  color: var(--rs-primary);
124
217
  }
125
- .rs-upload__file-icon--file-key[data-v-9d8ef208],
126
- .rs-upload__file-icon--key-round[data-v-9d8ef208],
127
- .rs-upload__file-icon--file-lock[data-v-9d8ef208] {
128
- color: var(--rs-warning, #d97706);
218
+ .rs-upload__file-icon--file-key[data-v-8c6abb48],
219
+ .rs-upload__file-icon--key-round[data-v-8c6abb48],
220
+ .rs-upload__file-icon--file-lock[data-v-8c6abb48] {
221
+ color: var(--rs-warning);
129
222
  }
130
- .rs-upload__file-icon--file-archive[data-v-9d8ef208] {
131
- color: var(--rs-secondary, #7c3aed);
223
+ .rs-upload__file-icon--file-archive[data-v-8c6abb48] {
224
+ color: var(--rs-primary);
132
225
  }
133
- .rs-upload__file-icon--file-spreadsheet[data-v-9d8ef208] {
134
- color: var(--rs-success, #16a34a);
226
+ .rs-upload__file-icon--file-spreadsheet[data-v-8c6abb48] {
227
+ color: var(--rs-success);
135
228
  }
136
- .rs-upload__file-icon--file-type[data-v-9d8ef208],
137
- .rs-upload__file-icon--file-text[data-v-9d8ef208] {
138
- color: var(--rs-danger, #dc2626);
229
+ .rs-upload__file-icon--file-type[data-v-8c6abb48],
230
+ .rs-upload__file-icon--file-text[data-v-8c6abb48] {
231
+ color: var(--rs-danger);
139
232
  }
140
- .rs-upload__file-icon--file-music[data-v-9d8ef208],
141
- .rs-upload__file-icon--file-video-camera[data-v-9d8ef208] {
142
- color: var(--rs-info, #2563eb);
233
+ .rs-upload__thumb[data-v-8c6abb48] {
234
+ display: block;
235
+ flex-shrink: 0;
236
+ width: var(--rs-upload-file-icon-size);
237
+ height: var(--rs-upload-file-icon-size);
238
+ padding: 0;
239
+ overflow: hidden;
240
+ border: 1px solid var(--rs-border-subtle);
241
+ border-radius: var(--rs-radius-sm);
242
+ background: var(--rs-bg);
243
+ cursor: pointer;
143
244
  }
144
- .rs-upload__file-meta[data-v-9d8ef208] {
245
+ .rs-upload__file--card .rs-upload__thumb[data-v-8c6abb48],
246
+ .rs-upload__file--card .rs-upload__file-icon[data-v-8c6abb48] {
247
+ width: 100%;
248
+ height: var(--rs-upload-card-size);
249
+ border: 0;
250
+ border-radius: 0;
251
+ }
252
+ .rs-upload__thumb-img[data-v-8c6abb48] {
253
+ display: block;
254
+ width: 100%;
255
+ height: 100%;
256
+ object-fit: cover;
257
+ }
258
+ .rs-upload__file-meta[data-v-8c6abb48] {
145
259
  display: grid;
146
260
  gap: 0.125rem;
147
261
  min-width: 0;
148
262
  flex: 1;
149
263
  }
150
- .rs-upload__file-name[data-v-9d8ef208] {
264
+ .rs-upload__file-name[data-v-8c6abb48] {
151
265
  overflow: hidden;
152
- color: var(--rs-text);
266
+ color: var(--rs-text-primary);
153
267
  font-size: var(--rs-font-size-sm);
154
268
  font-weight: var(--rs-font-weight-medium);
155
269
  line-height: var(--rs-line-height-tight);
156
270
  text-overflow: ellipsis;
157
271
  white-space: nowrap;
158
272
  }
159
- .rs-upload__file-size[data-v-9d8ef208] {
160
- color: var(--rs-muted);
273
+ .rs-upload__file-name--card[data-v-8c6abb48] {
274
+ position: absolute;
275
+ inset-inline: 0;
276
+ inset-block-end: 0;
277
+ padding-block: var(--rs-space-xs);
278
+ padding-inline: var(--rs-space-sm);
279
+ background: color-mix(in srgb, var(--rs-bg) 72%, transparent);
280
+ font-size: var(--rs-font-size-xs);
281
+ }
282
+ .rs-upload__file-size[data-v-8c6abb48] {
283
+ color: var(--rs-text-secondary);
161
284
  font-size: var(--rs-font-size-xs);
162
285
  line-height: var(--rs-line-height-tight);
163
286
  }
164
- .rs-upload__file-action[data-v-9d8ef208],
165
- .rs-upload__file-remove[data-v-9d8ef208] {
287
+ .rs-upload__file-actions[data-v-8c6abb48] {
288
+ display: inline-flex;
289
+ flex-shrink: 0;
290
+ align-items: center;
291
+ gap: var(--rs-space-xs);
292
+ }
293
+ .rs-upload__file--card .rs-upload__file-actions[data-v-8c6abb48] {
294
+ position: absolute;
295
+ inset-block-start: var(--rs-space-xs);
296
+ inset-inline-end: var(--rs-space-xs);
297
+ }
298
+ .rs-upload__file-action[data-v-8c6abb48],
299
+ .rs-upload__file-remove[data-v-8c6abb48] {
166
300
  display: inline-flex;
167
301
  flex-shrink: 0;
168
302
  align-items: center;
169
303
  justify-content: center;
170
- width: 1.75rem;
171
- height: 1.75rem;
304
+ width: var(--rs-upload-action-size);
305
+ height: var(--rs-upload-action-size);
172
306
  padding: 0;
173
307
  border: none;
174
308
  border-radius: var(--rs-radius-sm);
175
309
  background: transparent;
176
- color: var(--rs-muted);
310
+ color: var(--rs-text-secondary);
177
311
  cursor: pointer;
178
312
  transition:
179
313
  background var(--rs-transition-fast),
180
314
  color var(--rs-transition-fast);
181
315
  }
182
- .rs-upload__file-action[data-v-9d8ef208]:hover,
183
- .rs-upload__file-remove[data-v-9d8ef208]:hover {
316
+ .rs-upload__file-action[data-v-8c6abb48]:hover,
317
+ .rs-upload__file-remove[data-v-8c6abb48]:hover {
184
318
  background: var(--rs-item-hover);
185
- color: var(--rs-text);
319
+ color: var(--rs-text-primary);
186
320
  }
187
- .rs-upload__file-action[data-v-9d8ef208]:focus-visible,
188
- .rs-upload__file-remove[data-v-9d8ef208]:focus-visible {
321
+ .rs-upload__file-action[data-v-8c6abb48]:focus-visible,
322
+ .rs-upload__file-remove[data-v-8c6abb48]:focus-visible {
189
323
  outline: none;
190
324
  box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
191
325
  }
326
+ @media (prefers-reduced-motion: reduce) {
327
+ .rs-upload__dropzone[data-v-8c6abb48],
328
+ .rs-upload__icon[data-v-8c6abb48],
329
+ .rs-upload__trigger[data-v-8c6abb48],
330
+ .rs-upload__file[data-v-8c6abb48],
331
+ .rs-upload__file-action[data-v-8c6abb48],
332
+ .rs-upload__file-remove[data-v-8c6abb48] {
333
+ transition: none;
334
+ }
335
+ .rs-upload__dropzone:hover:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-8c6abb48],
336
+ .rs-upload__dropzone--dragging:not(.rs-upload__dropzone--disabled) .rs-upload__icon[data-v-8c6abb48] {
337
+ transform: none;
338
+ }
339
+ }
@@ -1,3 +1,19 @@
1
+ import type { RsComponentSize } from '../../../theme/types';
2
+ import { type RsUploadBeforeRemove, type RsUploadBeforeSelect, type RsUploadCapture, type RsUploadListType, type RsUploadVariant } from './upload-utils';
3
+ /**
4
+ * 模板 ref 请用此类型。
5
+ * 不要写 `InstanceType<typeof RsUpload>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
6
+ */
7
+ export interface RsUploadExpose {
8
+ open: () => void;
9
+ focus: () => void;
10
+ blur: () => void;
11
+ clear: () => void;
12
+ }
13
+ export type RsUploadInstance = RsUploadExpose & {
14
+ $el: HTMLElement;
15
+ };
16
+ export type { RsUploadBeforeRemove, RsUploadBeforeSelect, RsUploadCapture, RsUploadListType, RsUploadVariant, };
1
17
  type __VLS_Props = {
2
18
  accept?: string;
3
19
  multiple?: boolean;
@@ -12,27 +28,87 @@ type __VLS_Props = {
12
28
  showDownload?: boolean;
13
29
  /** 达到 maxCount 后隐藏拖拽区(仅保留列表) */
14
30
  hideDropzoneWhenFull?: boolean;
31
+ size?: RsComponentSize;
32
+ id?: string;
33
+ /** 向 Form 注册字段。不写到原生 file input(选完会清空,不能靠它提交)。 */
34
+ name?: string;
35
+ ariaLabel?: string;
36
+ listType?: RsUploadListType;
37
+ variant?: RsUploadVariant;
38
+ directory?: boolean;
39
+ capture?: RsUploadCapture;
40
+ /** 新文件覆盖已有列表,而不是追加 */
41
+ replace?: boolean;
42
+ /** 焦点在控件上时允许从剪贴板粘贴文件 */
43
+ paste?: boolean;
44
+ skipDuplicate?: boolean;
45
+ showPreview?: boolean;
46
+ beforeSelect?: RsUploadBeforeSelect;
47
+ beforeRemove?: RsUploadBeforeRemove;
15
48
  };
16
49
  type __VLS_ModelProps = {
17
50
  modelValue?: File[];
18
51
  };
19
52
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
20
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
53
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {}, __VLS_21: {
54
+ file: File;
55
+ index: number;
56
+ }, __VLS_23: {
57
+ file: File;
58
+ index: number;
59
+ }, __VLS_40: {}, __VLS_42: {};
60
+ type __VLS_Slots = {} & {
61
+ default?: (props: typeof __VLS_1) => any;
62
+ } & {
63
+ icon?: (props: typeof __VLS_3) => any;
64
+ } & {
65
+ hint?: (props: typeof __VLS_10) => any;
66
+ } & {
67
+ extra?: (props: typeof __VLS_12) => any;
68
+ } & {
69
+ default?: (props: typeof __VLS_14) => any;
70
+ } & {
71
+ file?: (props: typeof __VLS_21) => any;
72
+ } & {
73
+ 'file-icon'?: (props: typeof __VLS_23) => any;
74
+ } & {
75
+ default?: (props: typeof __VLS_40) => any;
76
+ } & {
77
+ icon?: (props: typeof __VLS_42) => any;
78
+ };
79
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsUploadExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
80
+ change: (files: File[]) => any;
21
81
  download: (file: File, index: number) => any;
22
82
  "update:modelValue": (value: File[]) => any;
23
83
  remove: (file: File, index: number) => any;
24
84
  reject: (errors: import("./upload-utils").RsUploadValidationError[]) => any;
85
+ preview: (file: File, index: number) => any;
25
86
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
87
+ onChange?: ((files: File[]) => any) | undefined;
26
88
  onDownload?: ((file: File, index: number) => any) | undefined;
27
89
  "onUpdate:modelValue"?: ((value: File[]) => any) | undefined;
28
90
  onRemove?: ((file: File, index: number) => any) | undefined;
29
91
  onReject?: ((errors: import("./upload-utils").RsUploadValidationError[]) => any) | undefined;
92
+ onPreview?: ((file: File, index: number) => any) | undefined;
30
93
  }>, {
94
+ replace: boolean;
95
+ variant: RsUploadVariant;
96
+ paste: boolean;
31
97
  disabled: boolean;
32
98
  multiple: boolean;
33
99
  showFileList: boolean;
34
100
  showDownload: boolean;
35
101
  hideDropzoneWhenFull: boolean;
102
+ listType: RsUploadListType;
103
+ directory: boolean;
104
+ skipDuplicate: boolean;
105
+ showPreview: boolean;
36
106
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
107
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
108
  declare const _default: typeof __VLS_export;
38
109
  export default _default;
110
+ type __VLS_WithSlots<T, S> = T & {
111
+ new (): {
112
+ $slots: S;
113
+ };
114
+ };