@maple-design/ui-vue 1.1.0 → 1.1.1

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 (345) hide show
  1. package/es/_components/field-presentation/EditorPanel.vue.mjs +3 -3
  2. package/es/_components/field-presentation/editor-pending.mjs +4 -0
  3. package/es/_components/field-presentation/form-bridge.mjs +1 -1
  4. package/es/_components/field-presentation/with-field-presentation.mjs +51 -8
  5. package/es/_components/picker-field/PickerField.vue.mjs +3 -13
  6. package/es/_components/picker-field/TemporalCurrent.vue.mjs +2 -3
  7. package/es/_components/picker-field/range-labels.mjs +18 -0
  8. package/es/_components/selected-options/style/index.css +33 -15
  9. package/es/_components/selection-field/use-selection-session.mjs +1 -0
  10. package/es/_components/virtual-list-v2/VirtualList2.vue.mjs +26 -4
  11. package/es/action-sheet/ActionSheet2.vue.mjs +2 -3
  12. package/es/auto-complete/auto-complete.mjs +2 -2
  13. package/es/auto-complete/presentation.mjs +1 -0
  14. package/es/auto-complete/props.mjs +2 -0
  15. package/es/auto-complete/style/index.css +7 -2
  16. package/es/back-top/style/index.css +1 -1
  17. package/es/breadcrumb/style/index.css +1 -1
  18. package/es/button/base.mjs +7 -0
  19. package/es/button/index.mjs +9 -9
  20. package/es/button/style/index.css +1 -1
  21. package/es/card/Card.vue.mjs +55 -13
  22. package/es/carousel/style/index.css +1 -1
  23. package/es/carousel/use-carousel-locale.mjs +10 -3
  24. package/es/cascader/CascaderMenu.vue.mjs +2 -2
  25. package/es/cascader/cascader-option.mjs +15 -6
  26. package/es/cascader/field-adapter.mjs +1 -0
  27. package/es/cascader/props.mjs +2 -0
  28. package/es/cascader/style/index.css +36 -9
  29. package/es/cascader/style/index.mjs +1 -0
  30. package/es/cascader/use-cascader-focus.mjs +9 -6
  31. package/es/checkbox/CheckboxGroup.vue.mjs +2 -2
  32. package/es/checkbox/base.mjs +7 -0
  33. package/es/checkbox/index.mjs +1 -1
  34. package/es/checkbox/presentation.mjs +2 -2
  35. package/es/checkbox/style/index.css +1 -1
  36. package/es/countdown/use-countdown.mjs +9 -2
  37. package/es/date/DatePanelActions.vue.mjs +4 -4
  38. package/es/date/DateRangeQuickPanel.vue.mjs +2 -2
  39. package/es/date/DateShortcuts.vue.mjs +2 -2
  40. package/es/date/field-adapter.mjs +2 -3
  41. package/es/date/picker-panels/DayPickerPanel2.vue.mjs +4 -5
  42. package/es/date/picker-panels/MonthPickerPanel2.vue.mjs +5 -6
  43. package/es/date/picker-panels/PanelHeader2.vue.mjs +6 -7
  44. package/es/date/picker-panels/YearPickerPanel2.vue.mjs +2 -2
  45. package/es/date/presentation/CalendarContent2.vue.mjs +13 -14
  46. package/es/date/presentation/CalendarViewport.vue.mjs +2 -3
  47. package/es/date/presentation/use-date-locale.mjs +2 -3
  48. package/es/date/presentation/use-field-locale.mjs +5 -6
  49. package/es/date/presentation/use-panel-actions-locale.mjs +4 -5
  50. package/es/date-range/presentation/RangeContent2.vue.mjs +4 -5
  51. package/es/dialog/Dialog.vue.mjs +3 -3
  52. package/es/ellipsis/style/index.css +1 -1
  53. package/es/fab/Fab.mjs +4 -5
  54. package/es/form/FormItemLabel.vue.mjs +4 -3
  55. package/es/form/focus-explicit-label.mjs +52 -0
  56. package/es/input/base.mjs +7 -0
  57. package/es/input/index.mjs +19 -19
  58. package/es/locale/date-text.mjs +38 -0
  59. package/es/locale/misc-text.mjs +23 -0
  60. package/es/locale/temporal-text.mjs +22 -0
  61. package/es/locale/zh-CN.mjs +235 -131
  62. package/es/maple-vue.mjs +1 -1
  63. package/es/maple.css +273 -207
  64. package/es/maple.esm.js +19385 -18978
  65. package/es/nav-menu/style/index.css +1 -1
  66. package/es/notice-bar/NoticeBar2.vue.mjs +2 -3
  67. package/es/number-keyboard/NumberKeyboard2.vue.mjs +5 -6
  68. package/es/pagination/PageInput.vue.mjs +2 -2
  69. package/es/pagination/style/index.css +2 -2
  70. package/es/people-select/PeopleSelect.mjs +35 -54
  71. package/es/people-select/Person.vue.mjs +3 -3
  72. package/es/people-select/emits.mjs +1 -1
  73. package/es/people-select/people-select.mjs +6 -8
  74. package/es/people-select/presentation.mjs +3 -1
  75. package/es/people-select/props.mjs +9 -3
  76. package/es/people-select/selection.mjs +64 -0
  77. package/es/people-select/style/index.css +6 -0
  78. package/es/picker/Picker.vue.mjs +2 -2
  79. package/es/picker/Picker2.vue.mjs +4 -5
  80. package/es/picker/base.mjs +7 -0
  81. package/es/picker/index.mjs +5 -5
  82. package/es/progress/style/index.css +2 -2
  83. package/es/radio/style/index.css +1 -1
  84. package/es/rate/style/index.css +2 -2
  85. package/es/ripple/index.mjs +78 -0
  86. package/es/search/HistoryContent.vue.mjs +4 -4
  87. package/es/search/Search.vue.mjs +4 -4
  88. package/es/search/props.mjs +1 -2
  89. package/es/select/props.mjs +2 -0
  90. package/es/select/select.mjs +14 -4
  91. package/es/select/style/index.css +22 -12
  92. package/es/select/use-select-controller.mjs +22 -2
  93. package/es/slider/Slider.vue.mjs +43 -21
  94. package/es/slider/SliderInput.vue.mjs +14 -2
  95. package/es/slider/style/index.css +2 -2
  96. package/es/steps/style/index.css +10 -10
  97. package/es/switch/Switch.vue.mjs +12 -1
  98. package/es/switch/style/index.css +1 -1
  99. package/es/tab-bar/TabBar.vue.mjs +2 -2
  100. package/es/tab-bar/style/index.css +2 -2
  101. package/es/tabs/style/index.css +1 -1
  102. package/es/tabs/use-tabs-configuration.mjs +2 -3
  103. package/es/themes/alps-light/index.mjs +10 -11
  104. package/es/themes/create-brand-dark.mjs +18 -0
  105. package/es/themes/dark/breadcrumb-item.mjs +1 -1
  106. package/es/themes/dark/cascader.mjs +1 -1
  107. package/es/themes/dark/index.mjs +2 -2
  108. package/es/themes/firefly-light/index.mjs +12 -13
  109. package/es/themes/index.mjs +2 -2
  110. package/es/themes/maple-light/index.mjs +2 -2
  111. package/es/time/presentation/TimeFieldPanel.vue.mjs +2 -2
  112. package/es/time/presentation/TimePanelContent2.vue.mjs +8 -9
  113. package/es/time/presentation/use-field-locale.mjs +5 -6
  114. package/es/time/props.mjs +1 -1
  115. package/es/time-range/presentation/TimePanelContent2.vue.mjs +6 -7
  116. package/es/time-range/props.mjs +1 -1
  117. package/es/trigger/popup-move-focus.mjs +6 -6
  118. package/es/trigger/position.mjs +49 -3
  119. package/es/trigger/positioner.mjs +34 -5
  120. package/es/trigger/trigger.mjs +1 -1
  121. package/es/upload/Upload.vue.mjs +18 -2
  122. package/es/upload/composables/use-upload-queue.mjs +10 -1
  123. package/es/upload/composables/use-uploader.mjs +45 -11
  124. package/es/upload/use-upload-locale.mjs +16 -12
  125. package/es/utils/modal-focus.mjs +9 -2
  126. package/es/utils/modal-surface.mjs +9 -3
  127. package/highlight/web-types.en-US.json +698 -176
  128. package/highlight/web-types.zh-CN.json +699 -177
  129. package/lib/_components/field-presentation/EditorPanel.vue.js +3 -3
  130. package/lib/_components/field-presentation/editor-pending.js +4 -0
  131. package/lib/_components/field-presentation/with-field-presentation.js +50 -7
  132. package/lib/_components/picker-field/PickerField.vue.js +3 -13
  133. package/lib/_components/picker-field/TemporalCurrent.vue.js +2 -3
  134. package/lib/_components/picker-field/range-labels.js +18 -0
  135. package/lib/_components/selected-options/style/index.css +33 -15
  136. package/lib/_components/selection-field/use-selection-session.js +1 -0
  137. package/lib/_components/virtual-list-v2/VirtualList2.vue.js +25 -3
  138. package/lib/action-sheet/ActionSheet2.vue.js +2 -3
  139. package/lib/auto-complete/auto-complete.js +2 -2
  140. package/lib/auto-complete/presentation.js +1 -0
  141. package/lib/auto-complete/props.js +2 -0
  142. package/lib/auto-complete/style/index.css +7 -2
  143. package/lib/back-top/style/index.css +1 -1
  144. package/lib/breadcrumb/style/index.css +1 -1
  145. package/lib/button/base.js +7 -0
  146. package/lib/button/index.js +4 -4
  147. package/lib/button/style/index.css +1 -1
  148. package/lib/card/Card.vue.js +55 -13
  149. package/lib/carousel/style/index.css +1 -1
  150. package/lib/carousel/use-carousel-locale.js +9 -2
  151. package/lib/cascader/CascaderMenu.vue.js +2 -2
  152. package/lib/cascader/cascader-option.js +15 -6
  153. package/lib/cascader/field-adapter.js +1 -0
  154. package/lib/cascader/props.js +2 -0
  155. package/lib/cascader/style/index.css +36 -9
  156. package/lib/cascader/style/index.js +1 -0
  157. package/lib/cascader/use-cascader-focus.js +9 -6
  158. package/lib/checkbox/base.js +7 -0
  159. package/lib/checkbox/index.js +4 -4
  160. package/lib/checkbox/presentation.js +2 -2
  161. package/lib/checkbox/style/index.css +1 -1
  162. package/lib/countdown/use-countdown.js +9 -2
  163. package/lib/date/DatePanelActions.vue.js +4 -4
  164. package/lib/date/DateRangeQuickPanel.vue.js +2 -2
  165. package/lib/date/DateShortcuts.vue.js +2 -2
  166. package/lib/date/field-adapter.js +2 -3
  167. package/lib/date/picker-panels/DayPickerPanel2.vue.js +6 -7
  168. package/lib/date/picker-panels/MonthPickerPanel2.vue.js +7 -8
  169. package/lib/date/picker-panels/PanelHeader2.vue.js +6 -7
  170. package/lib/date/picker-panels/YearPickerPanel2.vue.js +2 -2
  171. package/lib/date/presentation/CalendarContent2.vue.js +13 -14
  172. package/lib/date/presentation/CalendarViewport.vue.js +2 -3
  173. package/lib/date/presentation/use-date-locale.js +2 -3
  174. package/lib/date/presentation/use-field-locale.js +5 -6
  175. package/lib/date/presentation/use-panel-actions-locale.js +4 -5
  176. package/lib/date-range/presentation/RangeContent2.vue.js +4 -5
  177. package/lib/dialog/Dialog.vue.js +3 -3
  178. package/lib/ellipsis/style/index.css +1 -1
  179. package/lib/fab/Fab.js +4 -5
  180. package/lib/form/FormItemLabel.vue.js +3 -2
  181. package/lib/form/focus-explicit-label.js +52 -0
  182. package/lib/input/base.js +7 -0
  183. package/lib/input/index.js +5 -5
  184. package/lib/locale/date-text.js +38 -0
  185. package/lib/locale/misc-text.js +23 -0
  186. package/lib/locale/temporal-text.js +22 -0
  187. package/lib/locale/zh-CN.js +234 -130
  188. package/lib/maple-vue.js +1 -1
  189. package/lib/maple.cjs.js +3637 -2963
  190. package/lib/maple.css +273 -207
  191. package/lib/nav-menu/style/index.css +1 -1
  192. package/lib/notice-bar/NoticeBar2.vue.js +2 -3
  193. package/lib/number-keyboard/NumberKeyboard2.vue.js +5 -6
  194. package/lib/pagination/PageInput.vue.js +2 -2
  195. package/lib/pagination/style/index.css +2 -2
  196. package/lib/people-select/PeopleSelect.js +34 -53
  197. package/lib/people-select/Person.vue.js +3 -3
  198. package/lib/people-select/emits.js +1 -1
  199. package/lib/people-select/people-select.js +6 -8
  200. package/lib/people-select/presentation.js +3 -1
  201. package/lib/people-select/props.js +9 -3
  202. package/lib/people-select/selection.js +64 -0
  203. package/lib/people-select/style/index.css +6 -0
  204. package/lib/picker/Picker.vue.js +2 -2
  205. package/lib/picker/Picker2.vue.js +4 -5
  206. package/lib/picker/base.js +7 -0
  207. package/lib/picker/index.js +5 -5
  208. package/lib/progress/style/index.css +2 -2
  209. package/lib/radio/style/index.css +1 -1
  210. package/lib/rate/style/index.css +2 -2
  211. package/lib/ripple/index.js +78 -0
  212. package/lib/search/HistoryContent.vue.js +4 -4
  213. package/lib/search/Search.vue.js +4 -4
  214. package/lib/search/props.js +1 -2
  215. package/lib/select/props.js +2 -0
  216. package/lib/select/select.js +14 -4
  217. package/lib/select/style/index.css +22 -12
  218. package/lib/select/use-select-controller.js +22 -2
  219. package/lib/slider/Slider.vue.js +42 -20
  220. package/lib/slider/SliderInput.vue.js +14 -2
  221. package/lib/slider/style/index.css +2 -2
  222. package/lib/steps/style/index.css +10 -10
  223. package/lib/switch/Switch.vue.js +11 -0
  224. package/lib/switch/style/index.css +1 -1
  225. package/lib/tab-bar/TabBar.vue.js +2 -2
  226. package/lib/tab-bar/style/index.css +2 -2
  227. package/lib/tabs/style/index.css +1 -1
  228. package/lib/tabs/use-tabs-configuration.js +2 -3
  229. package/lib/themes/alps-light/index.js +10 -11
  230. package/lib/themes/create-brand-dark.js +18 -0
  231. package/lib/themes/dark/breadcrumb-item.js +1 -1
  232. package/lib/themes/dark/cascader.js +1 -1
  233. package/lib/themes/dark/index.js +2 -2
  234. package/lib/themes/firefly-light/index.js +12 -13
  235. package/lib/themes/index.js +2 -2
  236. package/lib/themes/maple-light/index.js +2 -2
  237. package/lib/time/presentation/TimeFieldPanel.vue.js +2 -2
  238. package/lib/time/presentation/TimePanelContent2.vue.js +8 -9
  239. package/lib/time/presentation/use-field-locale.js +5 -6
  240. package/lib/time/props.js +1 -1
  241. package/lib/time-range/presentation/TimePanelContent2.vue.js +6 -7
  242. package/lib/time-range/props.js +1 -1
  243. package/lib/trigger/popup-move-focus.js +6 -6
  244. package/lib/trigger/position.js +48 -2
  245. package/lib/trigger/positioner.js +33 -4
  246. package/lib/trigger/trigger.js +1 -1
  247. package/lib/upload/Upload.vue.js +17 -1
  248. package/lib/upload/composables/use-upload-queue.js +10 -1
  249. package/lib/upload/composables/use-uploader.js +45 -11
  250. package/lib/upload/use-upload-locale.js +15 -11
  251. package/lib/utils/modal-focus.js +9 -2
  252. package/lib/utils/modal-surface.js +9 -3
  253. package/package.json +6 -6
  254. package/types/styleVars.d.ts +3 -0
  255. package/types-generated/_components/field-presentation/editor-pending.d.ts +3 -0
  256. package/types-generated/_components/field-presentation/with-field-presentation.d.ts +2 -0
  257. package/types-generated/_components/picker-field/range-labels.d.ts +1 -0
  258. package/types-generated/action-sheet/ActionSheet.vue.d.ts +2 -1
  259. package/types-generated/action-sheet/index.d.ts +1 -1
  260. package/types-generated/auto-complete/auto-complete.d.ts +13 -4
  261. package/types-generated/auto-complete/index.d.ts +30 -0
  262. package/types-generated/auto-complete/presentation.d.ts +9 -0
  263. package/types-generated/auto-complete/props.d.ts +5 -1
  264. package/types-generated/breadcrumb/index.d.ts +72 -2
  265. package/types-generated/button/base.d.ts +266 -0
  266. package/types-generated/button/index.d.ts +3 -1
  267. package/types-generated/cascader/Cascader.vue.d.ts +10 -1
  268. package/types-generated/cascader/CascaderPanel.vue.d.ts +1 -1
  269. package/types-generated/cascader/index.d.ts +39 -9
  270. package/types-generated/cascader/presentation.d.ts +18 -3
  271. package/types-generated/cascader/props.d.ts +5 -0
  272. package/types-generated/cascader/style/index.d.ts +1 -0
  273. package/types-generated/cascader/use-cascader-controller.d.ts +4 -0
  274. package/types-generated/checkbox/base.d.ts +361 -0
  275. package/types-generated/checkbox/index.d.ts +362 -3
  276. package/types-generated/date/picker-panels/DayPickerPanel.vue.d.ts +6 -248
  277. package/types-generated/date/picker-panels/MonthPickerPanel.vue.d.ts +8 -249
  278. package/types-generated/date/picker-panels/PanelHeader.vue.d.ts +3 -124
  279. package/types-generated/date/picker-panels/YearPickerPanel.vue.d.ts +6 -248
  280. package/types-generated/date/presentation/CalendarContent.vue.d.ts +1169 -966
  281. package/types-generated/date-range/presentation/RangeContent.vue.d.ts +2561 -1430
  282. package/types-generated/form/focus-explicit-label.d.ts +2 -0
  283. package/types-generated/index.d.ts +1 -1
  284. package/types-generated/input/base.d.ts +481 -0
  285. package/types-generated/input/index.d.ts +2 -0
  286. package/types-generated/locale/date-text.d.ts +2 -0
  287. package/types-generated/locale/misc-text.d.ts +2 -0
  288. package/types-generated/locale/temporal-text.d.ts +2 -0
  289. package/types-generated/maple-vue.d.ts +1 -1
  290. package/types-generated/menu/index.d.ts +1022 -2
  291. package/types-generated/people-select/PeopleSelect.d.ts +38 -16
  292. package/types-generated/people-select/emits.d.ts +3 -2
  293. package/types-generated/people-select/index.d.ts +135 -63
  294. package/types-generated/people-select/people-select.d.ts +47 -16
  295. package/types-generated/people-select/presentation.d.ts +46 -16
  296. package/types-generated/people-select/props.d.ts +18 -7
  297. package/types-generated/people-select/selection.d.ts +11 -0
  298. package/types-generated/people-select/types.d.ts +5 -1
  299. package/types-generated/picker/Picker.vue.d.ts +5 -125
  300. package/types-generated/picker/base.d.ts +2043 -0
  301. package/types-generated/picker/index.d.ts +1134 -206
  302. package/types-generated/radio/index.d.ts +365 -2
  303. package/types-generated/search/Search.vue.d.ts +2 -2
  304. package/types-generated/search/props.d.ts +1 -1
  305. package/types-generated/select/index.d.ts +30 -0
  306. package/types-generated/select/native-editor-owner.d.ts +1 -0
  307. package/types-generated/select/props.d.ts +6 -1
  308. package/types-generated/select/select.d.ts +9 -0
  309. package/types-generated/select/use-select-controller.d.ts +5 -0
  310. package/types-generated/slider/SliderInput.vue.d.ts +4 -0
  311. package/types-generated/themes/dark/cascader.d.ts +1 -1
  312. package/types-generated/themes/index.d.ts +2 -2
  313. package/types-generated/time/presentation/TimePanelContent.vue.d.ts +1117 -309
  314. package/types-generated/time/props.d.ts +3 -2
  315. package/types-generated/time-range/picker-props.d.ts +1 -1
  316. package/types-generated/time-range/presentation/TimePanelContent.vue.d.ts +1125 -317
  317. package/types-generated/time-range/props.d.ts +6 -5
  318. package/types-generated/trigger/position.d.ts +1 -0
  319. package/types-generated/upload/Upload.vue.d.ts +11 -11
  320. package/types-generated/upload/composables/use-upload-queue.d.ts +1 -0
  321. package/types-generated/upload/composables/use-uploader.d.ts +2 -0
  322. package/types-generated/utils/modal-focus.d.ts +1 -0
  323. package/umd/_components/selected-options/style/index.css +33 -15
  324. package/umd/auto-complete/style/index.css +7 -2
  325. package/umd/back-top/style/index.css +1 -1
  326. package/umd/breadcrumb/style/index.css +1 -1
  327. package/umd/button/style/index.css +1 -1
  328. package/umd/carousel/style/index.css +1 -1
  329. package/umd/cascader/style/index.css +36 -9
  330. package/umd/checkbox/style/index.css +1 -1
  331. package/umd/ellipsis/style/index.css +1 -1
  332. package/umd/maple.css +273 -207
  333. package/umd/maple.js +3 -3
  334. package/umd/nav-menu/style/index.css +1 -1
  335. package/umd/pagination/style/index.css +2 -2
  336. package/umd/people-select/style/index.css +6 -0
  337. package/umd/progress/style/index.css +2 -2
  338. package/umd/radio/style/index.css +1 -1
  339. package/umd/rate/style/index.css +2 -2
  340. package/umd/select/style/index.css +22 -12
  341. package/umd/slider/style/index.css +2 -2
  342. package/umd/steps/style/index.css +10 -10
  343. package/umd/switch/style/index.css +1 -1
  344. package/umd/tab-bar/style/index.css +2 -2
  345. package/umd/tabs/style/index.css +1 -1
@@ -8,6 +8,12 @@ const waves = /* @__PURE__ */ new WeakMap();
8
8
  function ownedRipples(element) {
9
9
  return Array.from(element.children).filter((child) => waves.has(child));
10
10
  }
11
+ function stopObserverIfIdle(element, state) {
12
+ if (!state.tasker && !ownedRipples(element).length) {
13
+ state.migrationObserver?.disconnect();
14
+ state.migrationObserver = void 0;
15
+ }
16
+ }
11
17
  function transitionTime(element, property) {
12
18
  const style = element.ownerDocument.defaultView?.getComputedStyle(element);
13
19
  if (!style) {
@@ -47,6 +53,8 @@ function clearTasks(element) {
47
53
  if (!state) {
48
54
  return;
49
55
  }
56
+ state.migrationObserver?.disconnect();
57
+ state.migrationObserver = void 0;
50
58
  state.timers.forEach((timer) => window.clearTimeout(timer));
51
59
  state.timers.clear();
52
60
  state.tasker = null;
@@ -121,18 +129,27 @@ function createRipple(event) {
121
129
  if (!_ripple) {
122
130
  return;
123
131
  }
132
+ syncOwnerDocument(this);
124
133
  _ripple.removeRipple();
125
134
  if (_ripple.disabled || _ripple.tasker || !Context.enableRipple) {
126
135
  return;
127
136
  }
137
+ watchOwnerDuringGesture(this, _ripple);
128
138
  const task = () => {
129
139
  const current = () => this._ripple === _ripple && !_ripple.disabled && Context.enableRipple;
130
140
  if (!current()) {
141
+ if (this._ripple === _ripple) {
142
+ _ripple.tasker = null;
143
+ stopObserverIfIdle(this, _ripple);
144
+ }
131
145
  return;
132
146
  }
133
147
  _ripple.tasker = null;
134
148
  const { x, y, centerX, centerY, size } = computeRippleStyles(this, event);
135
149
  if (!current()) {
150
+ if (this._ripple === _ripple) {
151
+ clearTasks(this);
152
+ }
136
153
  return;
137
154
  }
138
155
  const ripple = this.ownerDocument.createElement("div");
@@ -145,6 +162,9 @@ function createRipple(event) {
145
162
  ripple.dataset.createdAt = String(performance.now());
146
163
  setStyles(this);
147
164
  if (!current()) {
165
+ if (this._ripple === _ripple) {
166
+ clearTasks(this);
167
+ }
148
168
  return;
149
169
  }
150
170
  this.appendChild(ripple);
@@ -152,6 +172,9 @@ function createRipple(event) {
152
172
  waves.set(ripple, wave);
153
173
  const expansion = transitionTime(ripple, "transform");
154
174
  if (!current() || waves.get(ripple) !== wave) {
175
+ if (!current() && this._ripple === _ripple) {
176
+ clearTasks(this);
177
+ }
155
178
  return;
156
179
  }
157
180
  wave.expandUntil += expansion;
@@ -160,10 +183,16 @@ function createRipple(event) {
160
183
  () => {
161
184
  const wave2 = waves.get(ripple);
162
185
  if (!wave2 || !current()) {
186
+ if (!current() && this._ripple === _ripple) {
187
+ clearTasks(this);
188
+ }
163
189
  return;
164
190
  }
165
191
  const expansion2 = transitionTime(ripple, "transform");
166
192
  if (!current() || waves.get(ripple) !== wave2) {
193
+ if (!current() && this._ripple === _ripple) {
194
+ clearTasks(this);
195
+ }
167
196
  return;
168
197
  }
169
198
  wave2.expandUntil = performance.now() + expansion2;
@@ -183,6 +212,7 @@ function removeRipple() {
183
212
  const task = () => {
184
213
  const ripples = ownedRipples(this);
185
214
  if (!ripples.length) {
215
+ stopObserverIfIdle(this, _ripple);
186
216
  return;
187
217
  }
188
218
  const lastRipple = ripples[ripples.length - 1];
@@ -209,6 +239,7 @@ function removeRipple() {
209
239
  lastRipple.remove();
210
240
  if (!ownedRipples(this).length) {
211
241
  restoreStyles(this);
242
+ stopObserverIfIdle(this, _ripple);
212
243
  }
213
244
  },
214
245
  Math.max(MINIMUM_REMOVAL_DELAY, transitionTime(lastRipple, "opacity"))
@@ -228,6 +259,7 @@ function forbidRippleTask() {
228
259
  _ripple.timers.delete(_ripple.tasker);
229
260
  }
230
261
  _ripple.tasker = null;
262
+ stopObserverIfIdle(this, _ripple);
231
263
  }
232
264
  function createTouchRipple(event) {
233
265
  if (this._ripple) {
@@ -263,6 +295,11 @@ function removeKeyboardRipple(event) {
263
295
  }
264
296
  const releaseGroups = /* @__PURE__ */ new WeakMap();
265
297
  const releaseEvents = ["touchend", "mouseup", "touchcancel", "dragend"];
298
+ function releaseOnMovedHost() {
299
+ if (this._ripple && this._ripple.document !== this.ownerDocument) {
300
+ syncOwnerDocument(this);
301
+ }
302
+ }
266
303
  function bindListeners(el) {
267
304
  const state = el._ripple;
268
305
  if (!state || state.listening || state.disabled) {
@@ -272,6 +309,9 @@ function bindListeners(el) {
272
309
  el.addEventListener("touchstart", createTouchRipple, { passive: true });
273
310
  el.addEventListener("mousedown", createMouseRipple, { passive: true });
274
311
  el.addEventListener("touchmove", forbidRippleTask, { passive: true });
312
+ el.addEventListener("mouseup", releaseOnMovedHost);
313
+ el.addEventListener("touchend", releaseOnMovedHost);
314
+ el.addEventListener("touchcancel", releaseOnMovedHost);
275
315
  el.addEventListener("dragstart", removeRipple, { passive: true });
276
316
  el.addEventListener("keydown", createKeyboardRipple);
277
317
  el.addEventListener("keyup", removeKeyboardRipple);
@@ -305,6 +345,9 @@ function unbindListeners(el) {
305
345
  el.removeEventListener("touchstart", createTouchRipple);
306
346
  el.removeEventListener("mousedown", createMouseRipple);
307
347
  el.removeEventListener("touchmove", forbidRippleTask);
348
+ el.removeEventListener("mouseup", releaseOnMovedHost);
349
+ el.removeEventListener("touchend", releaseOnMovedHost);
350
+ el.removeEventListener("touchcancel", releaseOnMovedHost);
308
351
  el.removeEventListener("dragstart", removeRipple);
309
352
  const group = releaseGroups.get(state.document);
310
353
  if (group && group.hosts.delete(el) && !group.hosts.size) {
@@ -315,6 +358,40 @@ function unbindListeners(el) {
315
358
  releaseGroups.delete(state.document);
316
359
  }
317
360
  }
361
+ function syncOwnerDocument(el) {
362
+ const state = el._ripple;
363
+ if (!state || state.document === el.ownerDocument) {
364
+ return;
365
+ }
366
+ clearTasks(el);
367
+ unbindListeners(el);
368
+ state.document = el.ownerDocument;
369
+ bindListeners(el);
370
+ }
371
+ function watchOwnerDuringGesture(el, state) {
372
+ if (state.migrationObserver || typeof MutationObserver === "undefined") {
373
+ return;
374
+ }
375
+ let connected = el.isConnected;
376
+ const observer = new MutationObserver(() => {
377
+ if (el._ripple !== state) {
378
+ return;
379
+ }
380
+ if (state.document !== el.ownerDocument) {
381
+ syncOwnerDocument(el);
382
+ } else if (connected && !el.isConnected) {
383
+ clearTasks(el);
384
+ } else if (el.isConnected) {
385
+ connected = true;
386
+ }
387
+ });
388
+ const root = el.getRootNode();
389
+ observer.observe(root, { childList: true, subtree: true });
390
+ if (root !== state.document) {
391
+ observer.observe(state.document, { childList: true, subtree: true });
392
+ }
393
+ state.migrationObserver = observer;
394
+ }
318
395
  function mounted(el, binding) {
319
396
  el._ripple = {
320
397
  document: el.ownerDocument,
@@ -334,6 +411,7 @@ function unmounted(el) {
334
411
  delete el._ripple;
335
412
  }
336
413
  function updated(el, binding) {
414
+ syncOwnerDocument(el);
337
415
  const newBinding = {
338
416
  color: binding.value?.color,
339
417
  disabled: binding.value?.disabled
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, useSlots, ref, watch, onBeforeUnmount, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, createBlock, normalizeStyle, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createVNode, mergeProps, createSlots, withCtx, normalizeProps, guardReactiveProps, Fragment, renderList } from "vue";
2
- import { Button } from "../button/index.mjs";
3
- import { Input } from "../input/index.mjs";
2
+ import MpButton from "../button/base.mjs";
3
+ import MpInput from "../input/base.mjs";
4
4
  import { createNamespace } from "../utils/components.mjs";
5
5
  import _sfc_main$1 from "./FieldSelect.vue.mjs";
6
6
  const _hoisted_1 = ["for"];
@@ -74,7 +74,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
74
74
  createTextVNode(toDisplayString(_ctx.settings.label), 1)
75
75
  ])
76
76
  ], 10, _hoisted_1)) : createCommentVNode("", true),
77
- createVNode(unref(Input), mergeProps({
77
+ createVNode(unref(MpInput), mergeProps({
78
78
  ref_key: "inputRef",
79
79
  ref: inputRef,
80
80
  loading: _ctx.settings.loading && _ctx.settings.loadingMode === "line",
@@ -120,7 +120,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
120
120
  key: "2"
121
121
  } : void 0
122
122
  ]), 1040, ["loading", "loading-mode", "model-value", "empty-value", "input-attrs", "error", "placeholder", "class", "onUpdate:modelValue", "onInput", "onChange", "onClear", "onPressEnter", "onBlur", "onFocus"]),
123
- createVNode(unref(Button), {
123
+ createVNode(unref(MpButton), {
124
124
  class: normalizeClass(unref(n)("cancel")),
125
125
  variant: "text",
126
126
  disabled: _ctx.state.searchDisabled,
@@ -2,10 +2,10 @@ import { defineComponent, useSlots, shallowRef, ref, reactive, computed, watch,
2
2
  import { IconSearch } from "@maple-design/icons-vue";
3
3
  import { useFieldPresentation } from "../_components/field-presentation/context.mjs";
4
4
  import _sfc_main$1 from "../_components/field-presentation/FieldPresentation.vue.mjs";
5
- import { Button } from "../button/index.mjs";
5
+ import MpButton from "../button/base.mjs";
6
6
  import "../field-decorator/index.mjs";
7
7
  import _sfc_main$5 from "../icon/RegisteredIcon.vue.mjs";
8
- import { Input } from "../input/index.mjs";
8
+ import MpInput from "../input/base.mjs";
9
9
  import _sfc_main$4 from "../loading/Loading.vue.mjs";
10
10
  import { Menu } from "../menu/index.mjs";
11
11
  import { createNamespace } from "../utils/components.mjs";
@@ -179,7 +179,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
179
179
  createTextVNode(toDisplayString(_ctx.label), 1)
180
180
  ])
181
181
  ], 10, _hoisted_2)) : createCommentVNode("", true),
182
- createVNode(unref(Input), {
182
+ createVNode(unref(MpInput), {
183
183
  ref_key: "input",
184
184
  ref: input,
185
185
  "edit-mode": "direct",
@@ -258,7 +258,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
258
258
  ]),
259
259
  _: 3
260
260
  }, 8, ["loading", "loading-mode", "class", "style", "variant", "size", "disabled", "readonly", "error"]),
261
- unref(effectiveShowAction) ? (openBlock(), createBlock(unref(Button), mergeProps({
261
+ unref(effectiveShowAction) ? (openBlock(), createBlock(unref(MpButton), mergeProps({
262
262
  key: 1,
263
263
  class: unref(n)("action"),
264
264
  variant: "text",
@@ -1,7 +1,6 @@
1
1
  import { fieldLoadingProps } from "../field-decorator/props.mjs";
2
- import "../input/index.mjs";
3
- import { emptyValueProp } from "../utils/empty-value.mjs";
4
2
  import { inputProps } from "../input/props.mjs";
3
+ import { emptyValueProp } from "../utils/empty-value.mjs";
5
4
  const searchProps = {
6
5
  ...fieldLoadingProps,
7
6
  readPretty: inputProps.readPretty,
@@ -7,6 +7,8 @@ import { emptyTextProp, emptyValuesProp } from "../utils/empty-value.mjs";
7
7
  import { popupContainerProp } from "../utils/popup-container.mjs";
8
8
  const selectProps = {
9
9
  ...fieldLoadingProps,
10
+ /** 弹出编辑是否需要确认;未设置时单选即提交,多选保留确认。 */
11
+ needConfirm: { type: Boolean, default: void 0 },
10
12
  openTriggerTarget: openTriggerTargetProp,
11
13
  /** 异步候选加载器;显式 options 优先,组件管理加载和请求取消。 */
12
14
  /** 内置本地过滤是否区分大小写;自定义过滤函数优先。 */
@@ -7,7 +7,7 @@ import _sfc_main$1 from "../_components/selected-options/SelectionEditor.vue.mjs
7
7
  import _sfc_main$2 from "../_components/selection-field/MenuPresentation.vue.mjs";
8
8
  import _sfc_main$3 from "../_components/selection-field/SelectionField.vue.mjs";
9
9
  import { isFunction } from "../_utils/is.mjs";
10
- import { Input } from "../input/index.mjs";
10
+ import MpInput from "../input/base.mjs";
11
11
  import _sfc_main$4 from "../input/InputFeedback.vue.mjs";
12
12
  import { createNamespace } from "../utils/components.mjs";
13
13
  import { selectEmits } from "./emits.mjs";
@@ -86,7 +86,7 @@ const Select = /* @__PURE__ */ defineComponent({
86
86
  "onRemove": (key) => controller.handleRemove(String(key)),
87
87
  "onClear": controller.clearSelection
88
88
  }, {
89
- default: () => [(props.filterable || props.creatable) && createVNode(Input, {
89
+ default: () => [(props.filterable || props.creatable) && createVNode(MpInput, {
90
90
  "modelValue": controller.computedInputValue,
91
91
  "editMode": "direct",
92
92
  "hint": false,
@@ -152,7 +152,7 @@ const Select = /* @__PURE__ */ defineComponent({
152
152
  "disabled": controller.mergedDisabled,
153
153
  "readonly": controller.mergedReadonly,
154
154
  "limit": props.limit,
155
- "needConfirm": controller.deferred,
155
+ "needConfirm": controller.deferred && controller.needConfirm,
156
156
  "pending": controller.session.pending,
157
157
  "error": controller.session.error || controller.presentationError,
158
158
  "onOpen": controller.handleOpenChange,
@@ -175,7 +175,7 @@ const Select = /* @__PURE__ */ defineComponent({
175
175
  editMode: "direct",
176
176
  readPretty: false,
177
177
  beforeCommit: void 0,
178
- open: void 0,
178
+ open: controller.needConfirm ? void 0 : true,
179
179
  defaultOpen: true,
180
180
  modelValue: controller.session.value,
181
181
  disabled: controller.mergedDisabled || controller.session.pending,
@@ -184,6 +184,16 @@ const Select = /* @__PURE__ */ defineComponent({
184
184
  onKeydown: (event) => emit("keydown", event),
185
185
  onSearch: (...args) => emit("search", ...args),
186
186
  onChange: () => {
187
+ },
188
+ onClear: () => {
189
+ if (!controller.needConfirm) {
190
+ void controller.session.commit();
191
+ }
192
+ },
193
+ onRemove: () => {
194
+ if (!controller.needConfirm) {
195
+ void controller.session.commit();
196
+ }
187
197
  }
188
198
  }, slots)
189
199
  }) : createVNode(_sfc_main$1, {
@@ -7,28 +7,31 @@
7
7
  * Popup Box
8
8
  **********************************************/
9
9
  --mp-select-popup-max-height: 200px;
10
- --mp-select-popup-border-radius: var(--mp-sys-radius-md);
10
+ --mp-select-popup-border-radius: var(--mp-sys-radius-lg);
11
11
  --mp-select-popup-padding-vertical: var(--mp-sys-space-2);
12
12
  --mp-select-popup-font-size: var(--mp-sys-font-size-md);
13
13
  --mp-select-popup-bg: var(--mp-sys-color-surface-overlay);
14
- --mp-select-popup-border-color: var(--mp-sys-color-border-default);
15
- --mp-select-popup-box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
14
+ --mp-select-popup-border-color: var(--mp-sys-color-border-subtle);
15
+ --mp-select-popup-box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
16
16
  /**********************************************
17
17
  * Popup Options
18
18
  * status: default / disabled / selected / hover
19
19
  **********************************************/
20
20
  --mp-select-popup-option-height: 36px;
21
21
  --mp-select-popup-option-font-weight-selected: var(--mp-sys-font-weight-medium);
22
- --mp-select-popup-option-padding-horizontal: var(--mp-sys-space-5);
23
- --mp-select-popup-option-bg: var(--mp-sys-color-surface-overlay);
22
+ --mp-select-popup-option-padding-horizontal: var(--mp-sys-space-4);
23
+ --mp-select-popup-padding-horizontal: var(--mp-sys-space-3);
24
+ --mp-select-popup-option-border-radius: var(--mp-sys-radius-lg);
25
+ --mp-select-popup-option-bg: transparent;
24
26
  --mp-select-popup-option-bg-hover: var(--mp-sys-color-state-hover);
25
- --mp-select-popup-option-bg-selected: var(--mp-sys-color-surface-overlay);
26
- --mp-select-popup-option-bg-disabled: var(--mp-sys-color-surface-overlay);
27
+ --mp-select-popup-option-bg-selected: transparent;
28
+ --mp-select-popup-option-bg-selected-hover: var(--mp-select-popup-option-bg-hover);
29
+ --mp-select-popup-option-bg-disabled: transparent;
27
30
  --mp-select-popup-option-text-color: var(--mp-sys-color-content-primary);
28
31
  --mp-select-popup-option-text-color-hover: var(--mp-sys-color-content-primary);
29
- --mp-select-popup-option-text-color-selected: var(--mp-sys-color-content-primary);
32
+ --mp-select-popup-option-text-color-selected: var(--mp-sys-color-action-primary);
30
33
  --mp-select-popup-option-text-color-disabled: var(--mp-sys-color-content-disabled);
31
- --mp-select-popup-option-check-color: var(--mp-sys-color-content-primary);
34
+ --mp-select-popup-option-check-color: var(--mp-sys-color-action-primary);
32
35
  --mp-select-popup-option-check-size: var(--mp-sys-font-size-md);
33
36
  --mp-select-popup-option-check-gap: var(--mp-sys-space-4);
34
37
  --mp-select-popup-group-title-height: 20px;
@@ -69,6 +72,8 @@
69
72
  list-style: none;
70
73
  }
71
74
  .mp-select-dropdown-list-wrapper {
75
+ box-sizing: border-box;
76
+ padding-inline: var(--mp-select-popup-padding-horizontal);
72
77
  max-height: var(--mp-select-popup-max-height);
73
78
  overflow-y: auto;
74
79
  }
@@ -80,6 +85,8 @@
80
85
  box-sizing: border-box;
81
86
  width: 100%;
82
87
  padding: 0 var(--mp-select-popup-option-padding-horizontal);
88
+ border-radius: var(--mp-select-popup-option-border-radius);
89
+ transition: background-color var(--mp-sys-motion-duration-fast) var(--mp-sys-motion-easing-standard), color var(--mp-sys-motion-duration-fast) var(--mp-sys-motion-easing-standard);
83
90
  color: var(--mp-select-popup-option-text-color);
84
91
  font-size: var(--mp-select-popup-font-size);
85
92
  line-height: var(--mp-select-popup-option-height);
@@ -119,11 +126,14 @@
119
126
  font-weight: var(--mp-select-popup-option-font-weight-selected);
120
127
  background-color: var(--mp-select-popup-option-bg-selected);
121
128
  }
122
- .mp-select-dropdown .mp-select-option-active,
123
- .mp-select-dropdown .mp-select-option:not(.mp-select-dropdown .mp-select-option-disabled):hover {
129
+ .mp-select-dropdown .mp-select-option-active:not(.mp-select-option-selected):not(.mp-select-option-disabled),
130
+ .mp-select-dropdown .mp-select-option:not(.mp-select-option-selected):not(.mp-select-option-disabled):hover {
124
131
  color: var(--mp-select-popup-option-text-color-hover);
125
132
  background-color: var(--mp-select-popup-option-bg-hover);
126
- transition: all var(--mp-sys-motion-duration-fast) var(--mp-sys-motion-easing-standard);
133
+ }
134
+ .mp-select-dropdown .mp-select-option-selected:not(.mp-select-option-disabled):hover,
135
+ .mp-select-dropdown .mp-select-option-selected.mp-select-option-active:not(.mp-select-option-disabled) {
136
+ background-color: var(--mp-select-popup-option-bg-selected-hover);
127
137
  }
128
138
  .mp-select-dropdown .mp-select-option-disabled {
129
139
  color: var(--mp-select-popup-option-text-color-disabled);
@@ -96,6 +96,7 @@ function useSelectController(props, { emit }) {
96
96
  }));
97
97
  const committedValue = computed(() => props.modelValue !== void 0 ? props.modelValue : _value.value);
98
98
  const deferred = computed(() => editMode.value !== "direct");
99
+ const needConfirm = computed(() => props.needConfirm ?? props.multiple);
99
100
  const publish = (value) => {
100
101
  _value.value = value;
101
102
  emit("update:modelValue", value);
@@ -309,6 +310,10 @@ function useSelectController(props, { emit }) {
309
310
  handleOpenChange(false);
310
311
  }
311
312
  }
313
+ nativeOwner?.onSelect?.(ev);
314
+ if (deferred.value && !needConfirm.value) {
315
+ void session.commit(ev);
316
+ }
312
317
  };
313
318
  const handleSearch = useFieldSearch(
314
319
  () => props.searchDelay,
@@ -348,6 +353,9 @@ function useSelectController(props, { emit }) {
348
353
  }
349
354
  const newKeys = computedValueObjects.value.map((item) => item.key).filter((_key) => _key !== key);
350
355
  session.update(getValueFromValueKeys(newKeys));
356
+ if (deferred.value && !needConfirm.value) {
357
+ void session.commit();
358
+ }
351
359
  emit("remove", optionInfo?.value);
352
360
  };
353
361
  const clearSelection = (e) => {
@@ -376,6 +384,9 @@ function useSelectController(props, { emit }) {
376
384
  clearedValue = [];
377
385
  }
378
386
  session.update(clearedValue);
387
+ if (deferred.value && !needConfirm.value) {
388
+ void session.commit();
389
+ }
379
390
  updateInputValue("");
380
391
  if (!deferred.value) {
381
392
  eventHandlers.value?.onClear?.();
@@ -477,7 +488,15 @@ function useSelectController(props, { emit }) {
477
488
  activeDescendant: computed(
478
489
  () => computedOpen.value && !loading.value && activeKey.value && enabledOptionKeys.value.includes(activeKey.value) && (optionRefs.value[activeKey.value] || !props.virtualListProps && optionInfoMap.get(activeKey.value)?.ref) ? getOptionId(activeKey.value) : void 0
479
490
  ),
480
- provideNativeEditorOwner: () => provide(selectNativeEditorOwner, { source, selectedOptions: _selectedOption }),
491
+ provideNativeEditorOwner: () => provide(selectNativeEditorOwner, {
492
+ source,
493
+ selectedOptions: _selectedOption,
494
+ onSelect: (event) => {
495
+ if (!needConfirm.value) {
496
+ void session.commit(event);
497
+ }
498
+ }
499
+ }),
481
500
  loading,
482
501
  refresh: source.refresh,
483
502
  registerPresentation: presentationState.register,
@@ -523,7 +542,8 @@ function useSelectController(props, { emit }) {
523
542
  handleDropdownReachBottom,
524
543
  session,
525
544
  deferred,
526
- canConfirm
545
+ canConfirm,
546
+ needConfirm
527
547
  };
528
548
  }
529
549
  export {
@@ -1,5 +1,6 @@
1
- import { defineComponent, computed, ref, useId, watch, onBeforeUnmount, onDeactivated, openBlock, createElementBlock, normalizeStyle, normalizeClass, unref, createElementVNode, Fragment, renderList, toDisplayString, withModifiers, renderSlot, createCommentVNode, createBlock } from "vue";
1
+ import { defineComponent, useAttrs, computed, ref, useId, watch, onBeforeUnmount, onDeactivated, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, normalizeStyle, Fragment, renderList, toDisplayString, withModifiers, renderSlot, createCommentVNode, createBlock } from "vue";
2
2
  import { useFormErrorDescription } from "../form/error-description.mjs";
3
+ import { useFormItemLabel } from "../form/label-context.mjs";
3
4
  import { createNamespace } from "../utils/components.mjs";
4
5
  import { positiveLength } from "../utils/size-length.mjs";
5
6
  import { sliderBounds, sliderValues, snap, stepValue } from "./model.mjs";
@@ -7,16 +8,33 @@ import { sliderProps } from "./props.mjs";
7
8
  import _sfc_main$1 from "./SliderInput.vue.mjs";
8
9
  import { useSliderForm } from "./use-slider-form.mjs";
9
10
  import { useDirection } from "@maple-design/use-vue";
10
- const _hoisted_1 = ["tabindex", "aria-label", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "aria-readonly", "aria-invalid", "aria-describedby", "onPointerdown", "onKeydown", "onFocus", "onMouseenter"];
11
- const _hoisted_2 = ["id"];
11
+ const _hoisted_1 = ["role", "aria-labelledby"];
12
+ const _hoisted_2 = ["tabindex", "aria-label", "aria-labelledby", "aria-valuemin", "aria-valuemax", "aria-valuenow", "aria-valuetext", "aria-orientation", "aria-disabled", "aria-readonly", "aria-invalid", "aria-describedby", "onPointerdown", "onKeydown", "onFocus", "onMouseenter"];
13
+ const _hoisted_3 = ["id"];
12
14
  const _sfc_main = /* @__PURE__ */ defineComponent({
13
- ...{ name: createNamespace("slider").name },
15
+ ...{ name: createNamespace("slider").name, inheritAttrs: false },
14
16
  __name: "Slider",
15
17
  props: sliderProps,
16
18
  emits: ["update:modelValue", "change", "start", "end"],
17
19
  setup(__props, { expose: __expose, emit: __emit }) {
18
20
  const { n, classes } = createNamespace("slider");
19
21
  const props = __props;
22
+ const attrs = useAttrs();
23
+ const formLabel = useFormItemLabel();
24
+ const rangeGroupLabel = computed(() => {
25
+ const label = formLabel?.value;
26
+ return props.range && attrs.role == null && attrs["aria-labelledby"] == null && label?.target && label.target === attrs.id ? label.id : void 0;
27
+ });
28
+ const singleLabelledBy = computed(() => {
29
+ if (props.range) {
30
+ return void 0;
31
+ }
32
+ if (attrs["aria-labelledby"] != null) {
33
+ return attrs["aria-labelledby"];
34
+ }
35
+ const label = formLabel?.value;
36
+ return props.ariaLabel == null && label?.target && label.target === attrs.id ? label.id : void 0;
37
+ });
20
38
  const { describe: describeError } = useFormErrorDescription();
21
39
  const emit = __emit;
22
40
  const { mergedDisabled, mergedReadonly, mergedError, eventHandlers } = useSliderForm(props);
@@ -293,21 +311,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
293
311
  onBeforeUnmount(cleanup);
294
312
  onDeactivated(cleanup);
295
313
  return (_ctx, _cache) => {
296
- return openBlock(), createElementBlock("div", {
314
+ return openBlock(), createElementBlock("div", mergeProps({
297
315
  ref_key: "root",
298
- ref: root,
299
- class: normalizeClass(
300
- unref(classes)(
301
- unref(n)(),
302
- unref(n)(`--${_ctx.orientation}`),
303
- [isDisabled.value, unref(n)("--disabled")],
304
- [unref(mergedReadonly), unref(n)("--readonly")],
305
- [unref(mergedError), unref(n)("--error")],
306
- [_ctx.marks, unref(n)("--marks")]
307
- )
316
+ ref: root
317
+ }, _ctx.$attrs, {
318
+ class: unref(classes)(
319
+ unref(n)(),
320
+ unref(n)(`--${_ctx.orientation}`),
321
+ [isDisabled.value, unref(n)("--disabled")],
322
+ [unref(mergedReadonly), unref(n)("--readonly")],
323
+ [unref(mergedError), unref(n)("--error")],
324
+ [_ctx.marks, unref(n)("--marks")]
308
325
  ),
309
- style: normalizeStyle(customStyle.value)
310
- }, [
326
+ style: customStyle.value,
327
+ role: _ctx.$attrs.role ?? (_ctx.range && (rangeGroupLabel.value || typeof _ctx.$attrs["aria-labelledby"] === "string" && _ctx.$attrs["aria-labelledby"].trim()) ? "group" : void 0),
328
+ "aria-labelledby": _ctx.$attrs["aria-labelledby"] ?? rangeGroupLabel.value
329
+ }), [
311
330
  createElementVNode("div", {
312
331
  ref_key: "track",
313
332
  ref: track,
@@ -346,6 +365,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
346
365
  role: "slider",
347
366
  tabindex: isDisabled.value ? void 0 : 0,
348
367
  "aria-label": thumbLabel(index),
368
+ "aria-labelledby": singleLabelledBy.value,
349
369
  "aria-valuemin": index === 1 && _ctx.range ? values.value[0] : bounds.value.min,
350
370
  "aria-valuemax": index === 0 ? values.value[1] : bounds.value.max,
351
371
  "aria-valuenow": values.value[index],
@@ -380,8 +400,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
380
400
  id: `${tooltipId}-${index}`,
381
401
  class: normalizeClass(unref(n)("tooltip")),
382
402
  role: "tooltip"
383
- }, toDisplayString(format(values.value[index])), 11, _hoisted_2)) : createCommentVNode("", true)
384
- ], 46, _hoisted_1);
403
+ }, toDisplayString(format(values.value[index])), 11, _hoisted_3)) : createCommentVNode("", true)
404
+ ], 46, _hoisted_2);
385
405
  }), 128))
386
406
  ], 34),
387
407
  _ctx.showInput ? (openBlock(), createBlock(_sfc_main$1, {
@@ -395,12 +415,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
395
415
  readonly: unref(mergedReadonly),
396
416
  error: unref(mergedError),
397
417
  "aria-label": _ctx.ariaLabel,
418
+ "aria-labelledby": singleLabelledBy.value,
419
+ "aria-describedby": _ctx.$attrs["aria-describedby"],
398
420
  "aria-invalid": _ctx.$attrs["aria-invalid"],
399
421
  onChange: inputChange,
400
422
  onFocus: _cache[2] || (_cache[2] = ($event) => unref(eventHandlers)?.onFocus?.()),
401
423
  onBlur: _cache[3] || (_cache[3] = ($event) => unref(eventHandlers)?.onBlur?.())
402
- }, null, 8, ["model-value", "min", "max", "step", "range", "disabled", "readonly", "error", "aria-label", "aria-invalid"])) : createCommentVNode("", true)
403
- ], 6);
424
+ }, null, 8, ["model-value", "min", "max", "step", "range", "disabled", "readonly", "error", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid"])) : createCommentVNode("", true)
425
+ ], 16, _hoisted_1);
404
426
  };
405
427
  }
406
428
  });
@@ -16,6 +16,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16
16
  readonly: Boolean,
17
17
  error: Boolean,
18
18
  ariaLabel: [String, Array],
19
+ ariaLabelledby: String,
20
+ ariaDescribedby: String,
19
21
  ariaInvalid: { type: [String, Boolean], default: void 0 }
20
22
  },
21
23
  emits: ["change", "focus", "blur"],
@@ -39,7 +41,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
39
41
  disabled: __props.disabled,
40
42
  readonly: __props.readonly,
41
43
  error: __props.error,
42
- "input-attrs": { "aria-label": label(0), "aria-invalid": __props.ariaInvalid },
44
+ "input-attrs": {
45
+ "aria-label": label(0),
46
+ "aria-labelledby": __props.ariaLabelledby,
47
+ "aria-describedby": __props.ariaDescribedby,
48
+ "aria-invalid": __props.ariaInvalid
49
+ },
43
50
  onChange: _cache[0] || (_cache[0] = (value) => emit("change", 0, value ?? void 0)),
44
51
  onFocus: _cache[1] || (_cache[1] = ($event) => emit("focus")),
45
52
  onBlur: _cache[2] || (_cache[2] = ($event) => emit("blur"))
@@ -53,7 +60,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
60
  disabled: __props.disabled,
54
61
  readonly: __props.readonly,
55
62
  error: __props.error,
56
- "input-attrs": { "aria-label": label(1), "aria-invalid": __props.ariaInvalid },
63
+ "input-attrs": {
64
+ "aria-label": label(1),
65
+ "aria-labelledby": __props.ariaLabelledby,
66
+ "aria-describedby": __props.ariaDescribedby,
67
+ "aria-invalid": __props.ariaInvalid
68
+ },
57
69
  onChange: _cache[3] || (_cache[3] = (value) => emit("change", 1, value ?? void 0)),
58
70
  onFocus: _cache[4] || (_cache[4] = ($event) => emit("focus")),
59
71
  onBlur: _cache[5] || (_cache[5] = ($event) => emit("blur"))
@@ -3,10 +3,10 @@
3
3
  }
4
4
  :root,
5
5
  :where([data-mp-theme]) {
6
- --mp-slider-active-color: var(--mp-sys-color-content-brand);
6
+ --mp-slider-active-color: var(--mp-sys-color-action-primary);
7
7
  --mp-slider-track-color: var(--mp-sys-color-state-hover);
8
8
  --mp-slider-thumb-color: var(--mp-sys-color-surface-default);
9
- --mp-slider-thumb-border-color: var(--mp-sys-color-content-brand);
9
+ --mp-slider-thumb-border-color: var(--mp-sys-color-action-primary);
10
10
  --mp-slider-text-color: var(--mp-sys-color-content-secondary);
11
11
  --mp-slider-tooltip-background: var(--mp-sys-color-surface-tooltip);
12
12
  --mp-slider-tooltip-color: var(--mp-sys-color-content-on-dark);