@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
@@ -10,6 +10,12 @@ const waves = /* @__PURE__ */ new WeakMap();
10
10
  function ownedRipples(element) {
11
11
  return Array.from(element.children).filter((child) => waves.has(child));
12
12
  }
13
+ function stopObserverIfIdle(element, state) {
14
+ if (!state.tasker && !ownedRipples(element).length) {
15
+ state.migrationObserver?.disconnect();
16
+ state.migrationObserver = void 0;
17
+ }
18
+ }
13
19
  function transitionTime(element, property) {
14
20
  const style = element.ownerDocument.defaultView?.getComputedStyle(element);
15
21
  if (!style) {
@@ -49,6 +55,8 @@ function clearTasks(element) {
49
55
  if (!state) {
50
56
  return;
51
57
  }
58
+ state.migrationObserver?.disconnect();
59
+ state.migrationObserver = void 0;
52
60
  state.timers.forEach((timer) => window.clearTimeout(timer));
53
61
  state.timers.clear();
54
62
  state.tasker = null;
@@ -123,18 +131,27 @@ function createRipple(event) {
123
131
  if (!_ripple) {
124
132
  return;
125
133
  }
134
+ syncOwnerDocument(this);
126
135
  _ripple.removeRipple();
127
136
  if (_ripple.disabled || _ripple.tasker || !context_index.default.enableRipple) {
128
137
  return;
129
138
  }
139
+ watchOwnerDuringGesture(this, _ripple);
130
140
  const task = () => {
131
141
  const current = () => this._ripple === _ripple && !_ripple.disabled && context_index.default.enableRipple;
132
142
  if (!current()) {
143
+ if (this._ripple === _ripple) {
144
+ _ripple.tasker = null;
145
+ stopObserverIfIdle(this, _ripple);
146
+ }
133
147
  return;
134
148
  }
135
149
  _ripple.tasker = null;
136
150
  const { x, y, centerX, centerY, size } = computeRippleStyles(this, event);
137
151
  if (!current()) {
152
+ if (this._ripple === _ripple) {
153
+ clearTasks(this);
154
+ }
138
155
  return;
139
156
  }
140
157
  const ripple = this.ownerDocument.createElement("div");
@@ -147,6 +164,9 @@ function createRipple(event) {
147
164
  ripple.dataset.createdAt = String(performance.now());
148
165
  setStyles(this);
149
166
  if (!current()) {
167
+ if (this._ripple === _ripple) {
168
+ clearTasks(this);
169
+ }
150
170
  return;
151
171
  }
152
172
  this.appendChild(ripple);
@@ -154,6 +174,9 @@ function createRipple(event) {
154
174
  waves.set(ripple, wave);
155
175
  const expansion = transitionTime(ripple, "transform");
156
176
  if (!current() || waves.get(ripple) !== wave) {
177
+ if (!current() && this._ripple === _ripple) {
178
+ clearTasks(this);
179
+ }
157
180
  return;
158
181
  }
159
182
  wave.expandUntil += expansion;
@@ -162,10 +185,16 @@ function createRipple(event) {
162
185
  () => {
163
186
  const wave2 = waves.get(ripple);
164
187
  if (!wave2 || !current()) {
188
+ if (!current() && this._ripple === _ripple) {
189
+ clearTasks(this);
190
+ }
165
191
  return;
166
192
  }
167
193
  const expansion2 = transitionTime(ripple, "transform");
168
194
  if (!current() || waves.get(ripple) !== wave2) {
195
+ if (!current() && this._ripple === _ripple) {
196
+ clearTasks(this);
197
+ }
169
198
  return;
170
199
  }
171
200
  wave2.expandUntil = performance.now() + expansion2;
@@ -185,6 +214,7 @@ function removeRipple() {
185
214
  const task = () => {
186
215
  const ripples = ownedRipples(this);
187
216
  if (!ripples.length) {
217
+ stopObserverIfIdle(this, _ripple);
188
218
  return;
189
219
  }
190
220
  const lastRipple = ripples[ripples.length - 1];
@@ -211,6 +241,7 @@ function removeRipple() {
211
241
  lastRipple.remove();
212
242
  if (!ownedRipples(this).length) {
213
243
  restoreStyles(this);
244
+ stopObserverIfIdle(this, _ripple);
214
245
  }
215
246
  },
216
247
  Math.max(MINIMUM_REMOVAL_DELAY, transitionTime(lastRipple, "opacity"))
@@ -230,6 +261,7 @@ function forbidRippleTask() {
230
261
  _ripple.timers.delete(_ripple.tasker);
231
262
  }
232
263
  _ripple.tasker = null;
264
+ stopObserverIfIdle(this, _ripple);
233
265
  }
234
266
  function createTouchRipple(event) {
235
267
  if (this._ripple) {
@@ -265,6 +297,11 @@ function removeKeyboardRipple(event) {
265
297
  }
266
298
  const releaseGroups = /* @__PURE__ */ new WeakMap();
267
299
  const releaseEvents = ["touchend", "mouseup", "touchcancel", "dragend"];
300
+ function releaseOnMovedHost() {
301
+ if (this._ripple && this._ripple.document !== this.ownerDocument) {
302
+ syncOwnerDocument(this);
303
+ }
304
+ }
268
305
  function bindListeners(el) {
269
306
  const state = el._ripple;
270
307
  if (!state || state.listening || state.disabled) {
@@ -274,6 +311,9 @@ function bindListeners(el) {
274
311
  el.addEventListener("touchstart", createTouchRipple, { passive: true });
275
312
  el.addEventListener("mousedown", createMouseRipple, { passive: true });
276
313
  el.addEventListener("touchmove", forbidRippleTask, { passive: true });
314
+ el.addEventListener("mouseup", releaseOnMovedHost);
315
+ el.addEventListener("touchend", releaseOnMovedHost);
316
+ el.addEventListener("touchcancel", releaseOnMovedHost);
277
317
  el.addEventListener("dragstart", removeRipple, { passive: true });
278
318
  el.addEventListener("keydown", createKeyboardRipple);
279
319
  el.addEventListener("keyup", removeKeyboardRipple);
@@ -307,6 +347,9 @@ function unbindListeners(el) {
307
347
  el.removeEventListener("touchstart", createTouchRipple);
308
348
  el.removeEventListener("mousedown", createMouseRipple);
309
349
  el.removeEventListener("touchmove", forbidRippleTask);
350
+ el.removeEventListener("mouseup", releaseOnMovedHost);
351
+ el.removeEventListener("touchend", releaseOnMovedHost);
352
+ el.removeEventListener("touchcancel", releaseOnMovedHost);
310
353
  el.removeEventListener("dragstart", removeRipple);
311
354
  const group = releaseGroups.get(state.document);
312
355
  if (group && group.hosts.delete(el) && !group.hosts.size) {
@@ -317,6 +360,40 @@ function unbindListeners(el) {
317
360
  releaseGroups.delete(state.document);
318
361
  }
319
362
  }
363
+ function syncOwnerDocument(el) {
364
+ const state = el._ripple;
365
+ if (!state || state.document === el.ownerDocument) {
366
+ return;
367
+ }
368
+ clearTasks(el);
369
+ unbindListeners(el);
370
+ state.document = el.ownerDocument;
371
+ bindListeners(el);
372
+ }
373
+ function watchOwnerDuringGesture(el, state) {
374
+ if (state.migrationObserver || typeof MutationObserver === "undefined") {
375
+ return;
376
+ }
377
+ let connected = el.isConnected;
378
+ const observer = new MutationObserver(() => {
379
+ if (el._ripple !== state) {
380
+ return;
381
+ }
382
+ if (state.document !== el.ownerDocument) {
383
+ syncOwnerDocument(el);
384
+ } else if (connected && !el.isConnected) {
385
+ clearTasks(el);
386
+ } else if (el.isConnected) {
387
+ connected = true;
388
+ }
389
+ });
390
+ const root = el.getRootNode();
391
+ observer.observe(root, { childList: true, subtree: true });
392
+ if (root !== state.document) {
393
+ observer.observe(state.document, { childList: true, subtree: true });
394
+ }
395
+ state.migrationObserver = observer;
396
+ }
320
397
  function mounted(el, binding) {
321
398
  el._ripple = {
322
399
  document: el.ownerDocument,
@@ -336,6 +413,7 @@ function unmounted(el) {
336
413
  delete el._ripple;
337
414
  }
338
415
  function updated(el, binding) {
416
+ syncOwnerDocument(el);
339
417
  const newBinding = {
340
418
  color: binding.value?.color,
341
419
  disabled: binding.value?.disabled
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const button_index = require("../button/index.js");
5
- const input_index = require("../input/index.js");
4
+ const base$1 = require("../button/base.js");
5
+ const base = require("../input/base.js");
6
6
  const components = require("../utils/components.js");
7
7
  const FieldSelect_vue_vue_type_script_setup_true_lang = require("./FieldSelect.vue.js");
8
8
  const _hoisted_1 = ["for"];
@@ -76,7 +76,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
76
76
  vue.createTextVNode(vue.toDisplayString(_ctx.settings.label), 1)
77
77
  ])
78
78
  ], 10, _hoisted_1)) : vue.createCommentVNode("", true),
79
- vue.createVNode(vue.unref(input_index.Input), vue.mergeProps({
79
+ vue.createVNode(vue.unref(base.default), vue.mergeProps({
80
80
  ref_key: "inputRef",
81
81
  ref: inputRef,
82
82
  loading: _ctx.settings.loading && _ctx.settings.loadingMode === "line",
@@ -122,7 +122,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
122
122
  key: "2"
123
123
  } : void 0
124
124
  ]), 1040, ["loading", "loading-mode", "model-value", "empty-value", "input-attrs", "error", "placeholder", "class", "onUpdate:modelValue", "onInput", "onChange", "onClear", "onPressEnter", "onBlur", "onFocus"]),
125
- vue.createVNode(vue.unref(button_index.Button), {
125
+ vue.createVNode(vue.unref(base$1.default), {
126
126
  class: vue.normalizeClass(vue.unref(n)("cancel")),
127
127
  variant: "text",
128
128
  disabled: _ctx.state.searchDisabled,
@@ -4,10 +4,10 @@ const vue = require("vue");
4
4
  const iconsVue = require("@maple-design/icons-vue");
5
5
  const context = require("../_components/field-presentation/context.js");
6
6
  const FieldPresentation_vue_vue_type_script_setup_true_lang = require("../_components/field-presentation/FieldPresentation.vue.js");
7
- const button_index = require("../button/index.js");
7
+ const base$1 = require("../button/base.js");
8
8
  require("../field-decorator/index.js");
9
9
  const RegisteredIcon_vue_vue_type_script_setup_true_lang = require("../icon/RegisteredIcon.vue.js");
10
- const input_index = require("../input/index.js");
10
+ const base = require("../input/base.js");
11
11
  const Loading_vue_vue_type_script_setup_true_lang = require("../loading/Loading.vue.js");
12
12
  const menu_index = require("../menu/index.js");
13
13
  const components = require("../utils/components.js");
@@ -181,7 +181,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
181
181
  vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
182
182
  ])
183
183
  ], 10, _hoisted_2)) : vue.createCommentVNode("", true),
184
- vue.createVNode(vue.unref(input_index.Input), {
184
+ vue.createVNode(vue.unref(base.default), {
185
185
  ref_key: "input",
186
186
  ref: input,
187
187
  "edit-mode": "direct",
@@ -260,7 +260,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
260
260
  ]),
261
261
  _: 3
262
262
  }, 8, ["loading", "loading-mode", "class", "style", "variant", "size", "disabled", "readonly", "error"]),
263
- vue.unref(effectiveShowAction) ? (vue.openBlock(), vue.createBlock(vue.unref(button_index.Button), vue.mergeProps({
263
+ vue.unref(effectiveShowAction) ? (vue.openBlock(), vue.createBlock(vue.unref(base$1.default), vue.mergeProps({
264
264
  key: 1,
265
265
  class: vue.unref(n)("action"),
266
266
  variant: "text",
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const props$1 = require("../field-decorator/props.js");
4
- require("../input/index.js");
5
- const emptyValue = require("../utils/empty-value.js");
6
4
  const props = require("../input/props.js");
5
+ const emptyValue = require("../utils/empty-value.js");
7
6
  const searchProps = {
8
7
  ...props$1.fieldLoadingProps,
9
8
  readPretty: props.inputProps.readPretty,
@@ -9,6 +9,8 @@ const emptyValue = require("../utils/empty-value.js");
9
9
  const popupContainer = require("../utils/popup-container.js");
10
10
  const selectProps = {
11
11
  ...props.fieldLoadingProps,
12
+ /** 弹出编辑是否需要确认;未设置时单选即提交,多选保留确认。 */
13
+ needConfirm: { type: Boolean, default: void 0 },
12
14
  openTriggerTarget: openTrigger.openTriggerTargetProp,
13
15
  /** 异步候选加载器;显式 options 优先,组件管理加载和请求取消。 */
14
16
  /** 内置本地过滤是否区分大小写;自定义过滤函数优先。 */
@@ -9,7 +9,7 @@ const SelectionEditor_vue_vue_type_script_setup_true_lang = require("../_compone
9
9
  const MenuPresentation_vue_vue_type_script_setup_true_lang = require("../_components/selection-field/MenuPresentation.vue.js");
10
10
  const SelectionField_vue_vue_type_script_setup_true_lang = require("../_components/selection-field/SelectionField.vue.js");
11
11
  const is = require("../_utils/is.js");
12
- const input_index = require("../input/index.js");
12
+ const base = require("../input/base.js");
13
13
  const InputFeedback_vue_vue_type_script_setup_true_lang = require("../input/InputFeedback.vue.js");
14
14
  const components = require("../utils/components.js");
15
15
  const emits = require("./emits.js");
@@ -88,7 +88,7 @@ const Select = /* @__PURE__ */ vue.defineComponent({
88
88
  "onRemove": (key) => controller.handleRemove(String(key)),
89
89
  "onClear": controller.clearSelection
90
90
  }, {
91
- default: () => [(props2.filterable || props2.creatable) && vue.createVNode(input_index.Input, {
91
+ default: () => [(props2.filterable || props2.creatable) && vue.createVNode(base.default, {
92
92
  "modelValue": controller.computedInputValue,
93
93
  "editMode": "direct",
94
94
  "hint": false,
@@ -154,7 +154,7 @@ const Select = /* @__PURE__ */ vue.defineComponent({
154
154
  "disabled": controller.mergedDisabled,
155
155
  "readonly": controller.mergedReadonly,
156
156
  "limit": props2.limit,
157
- "needConfirm": controller.deferred,
157
+ "needConfirm": controller.deferred && controller.needConfirm,
158
158
  "pending": controller.session.pending,
159
159
  "error": controller.session.error || controller.presentationError,
160
160
  "onOpen": controller.handleOpenChange,
@@ -177,7 +177,7 @@ const Select = /* @__PURE__ */ vue.defineComponent({
177
177
  editMode: "direct",
178
178
  readPretty: false,
179
179
  beforeCommit: void 0,
180
- open: void 0,
180
+ open: controller.needConfirm ? void 0 : true,
181
181
  defaultOpen: true,
182
182
  modelValue: controller.session.value,
183
183
  disabled: controller.mergedDisabled || controller.session.pending,
@@ -186,6 +186,16 @@ const Select = /* @__PURE__ */ vue.defineComponent({
186
186
  onKeydown: (event) => emit("keydown", event),
187
187
  onSearch: (...args) => emit("search", ...args),
188
188
  onChange: () => {
189
+ },
190
+ onClear: () => {
191
+ if (!controller.needConfirm) {
192
+ void controller.session.commit();
193
+ }
194
+ },
195
+ onRemove: () => {
196
+ if (!controller.needConfirm) {
197
+ void controller.session.commit();
198
+ }
189
199
  }
190
200
  }, slots)
191
201
  }) : vue.createVNode(SelectionEditor_vue_vue_type_script_setup_true_lang.default, {
@@ -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);
@@ -98,6 +98,7 @@ function useSelectController(props, { emit }) {
98
98
  }));
99
99
  const committedValue = vue.computed(() => props.modelValue !== void 0 ? props.modelValue : _value.value);
100
100
  const deferred = vue.computed(() => editMode.value !== "direct");
101
+ const needConfirm = vue.computed(() => props.needConfirm ?? props.multiple);
101
102
  const publish = (value) => {
102
103
  _value.value = value;
103
104
  emit("update:modelValue", value);
@@ -311,6 +312,10 @@ function useSelectController(props, { emit }) {
311
312
  handleOpenChange(false);
312
313
  }
313
314
  }
315
+ nativeOwner?.onSelect?.(ev);
316
+ if (deferred.value && !needConfirm.value) {
317
+ void session.commit(ev);
318
+ }
314
319
  };
315
320
  const handleSearch = useFieldSearch.useFieldSearch(
316
321
  () => props.searchDelay,
@@ -350,6 +355,9 @@ function useSelectController(props, { emit }) {
350
355
  }
351
356
  const newKeys = computedValueObjects.value.map((item) => item.key).filter((_key) => _key !== key);
352
357
  session.update(getValueFromValueKeys(newKeys));
358
+ if (deferred.value && !needConfirm.value) {
359
+ void session.commit();
360
+ }
353
361
  emit("remove", optionInfo?.value);
354
362
  };
355
363
  const clearSelection = (e) => {
@@ -378,6 +386,9 @@ function useSelectController(props, { emit }) {
378
386
  clearedValue = [];
379
387
  }
380
388
  session.update(clearedValue);
389
+ if (deferred.value && !needConfirm.value) {
390
+ void session.commit();
391
+ }
381
392
  updateInputValue("");
382
393
  if (!deferred.value) {
383
394
  eventHandlers.value?.onClear?.();
@@ -479,7 +490,15 @@ function useSelectController(props, { emit }) {
479
490
  activeDescendant: vue.computed(
480
491
  () => 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
481
492
  ),
482
- provideNativeEditorOwner: () => vue.provide(nativeEditorOwner.selectNativeEditorOwner, { source, selectedOptions: _selectedOption }),
493
+ provideNativeEditorOwner: () => vue.provide(nativeEditorOwner.selectNativeEditorOwner, {
494
+ source,
495
+ selectedOptions: _selectedOption,
496
+ onSelect: (event) => {
497
+ if (!needConfirm.value) {
498
+ void session.commit(event);
499
+ }
500
+ }
501
+ }),
483
502
  loading,
484
503
  refresh: source.refresh,
485
504
  registerPresentation: presentationState.register,
@@ -525,7 +544,8 @@ function useSelectController(props, { emit }) {
525
544
  handleDropdownReachBottom,
526
545
  session,
527
546
  deferred,
528
- canConfirm
547
+ canConfirm,
548
+ needConfirm
529
549
  };
530
550
  }
531
551
  exports.useSelectController = useSelectController;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const errorDescription = require("../form/error-description.js");
5
+ const labelContext = require("../form/label-context.js");
5
6
  const components = require("../utils/components.js");
6
7
  const sizeLength = require("../utils/size-length.js");
7
8
  const model = require("./model.js");
@@ -9,16 +10,33 @@ const props = require("./props.js");
9
10
  const SliderInput_vue_vue_type_script_setup_true_lang = require("./SliderInput.vue.js");
10
11
  const useSliderForm = require("./use-slider-form.js");
11
12
  const useVue = require("@maple-design/use-vue");
12
- 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"];
13
- const _hoisted_2 = ["id"];
13
+ const _hoisted_1 = ["role", "aria-labelledby"];
14
+ 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"];
15
+ const _hoisted_3 = ["id"];
14
16
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
15
- ...{ name: components.createNamespace("slider").name },
17
+ ...{ name: components.createNamespace("slider").name, inheritAttrs: false },
16
18
  __name: "Slider",
17
19
  props: props.sliderProps,
18
20
  emits: ["update:modelValue", "change", "start", "end"],
19
21
  setup(__props, { expose: __expose, emit: __emit }) {
20
22
  const { n, classes } = components.createNamespace("slider");
21
23
  const props2 = __props;
24
+ const attrs = vue.useAttrs();
25
+ const formLabel = labelContext.useFormItemLabel();
26
+ const rangeGroupLabel = vue.computed(() => {
27
+ const label = formLabel?.value;
28
+ return props2.range && attrs.role == null && attrs["aria-labelledby"] == null && label?.target && label.target === attrs.id ? label.id : void 0;
29
+ });
30
+ const singleLabelledBy = vue.computed(() => {
31
+ if (props2.range) {
32
+ return void 0;
33
+ }
34
+ if (attrs["aria-labelledby"] != null) {
35
+ return attrs["aria-labelledby"];
36
+ }
37
+ const label = formLabel?.value;
38
+ return props2.ariaLabel == null && label?.target && label.target === attrs.id ? label.id : void 0;
39
+ });
22
40
  const { describe: describeError } = errorDescription.useFormErrorDescription();
23
41
  const emit = __emit;
24
42
  const { mergedDisabled, mergedReadonly, mergedError, eventHandlers } = useSliderForm.useSliderForm(props2);
@@ -295,21 +313,22 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
295
313
  vue.onBeforeUnmount(cleanup);
296
314
  vue.onDeactivated(cleanup);
297
315
  return (_ctx, _cache) => {
298
- return vue.openBlock(), vue.createElementBlock("div", {
316
+ return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
299
317
  ref_key: "root",
300
- ref: root,
301
- class: vue.normalizeClass(
302
- vue.unref(classes)(
303
- vue.unref(n)(),
304
- vue.unref(n)(`--${_ctx.orientation}`),
305
- [isDisabled.value, vue.unref(n)("--disabled")],
306
- [vue.unref(mergedReadonly), vue.unref(n)("--readonly")],
307
- [vue.unref(mergedError), vue.unref(n)("--error")],
308
- [_ctx.marks, vue.unref(n)("--marks")]
309
- )
318
+ ref: root
319
+ }, _ctx.$attrs, {
320
+ class: vue.unref(classes)(
321
+ vue.unref(n)(),
322
+ vue.unref(n)(`--${_ctx.orientation}`),
323
+ [isDisabled.value, vue.unref(n)("--disabled")],
324
+ [vue.unref(mergedReadonly), vue.unref(n)("--readonly")],
325
+ [vue.unref(mergedError), vue.unref(n)("--error")],
326
+ [_ctx.marks, vue.unref(n)("--marks")]
310
327
  ),
311
- style: vue.normalizeStyle(customStyle.value)
312
- }, [
328
+ style: customStyle.value,
329
+ role: _ctx.$attrs.role ?? (_ctx.range && (rangeGroupLabel.value || typeof _ctx.$attrs["aria-labelledby"] === "string" && _ctx.$attrs["aria-labelledby"].trim()) ? "group" : void 0),
330
+ "aria-labelledby": _ctx.$attrs["aria-labelledby"] ?? rangeGroupLabel.value
331
+ }), [
313
332
  vue.createElementVNode("div", {
314
333
  ref_key: "track",
315
334
  ref: track,
@@ -348,6 +367,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
348
367
  role: "slider",
349
368
  tabindex: isDisabled.value ? void 0 : 0,
350
369
  "aria-label": thumbLabel(index),
370
+ "aria-labelledby": singleLabelledBy.value,
351
371
  "aria-valuemin": index === 1 && _ctx.range ? values.value[0] : bounds.value.min,
352
372
  "aria-valuemax": index === 0 ? values.value[1] : bounds.value.max,
353
373
  "aria-valuenow": values.value[index],
@@ -382,8 +402,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
382
402
  id: `${tooltipId}-${index}`,
383
403
  class: vue.normalizeClass(vue.unref(n)("tooltip")),
384
404
  role: "tooltip"
385
- }, vue.toDisplayString(format(values.value[index])), 11, _hoisted_2)) : vue.createCommentVNode("", true)
386
- ], 46, _hoisted_1);
405
+ }, vue.toDisplayString(format(values.value[index])), 11, _hoisted_3)) : vue.createCommentVNode("", true)
406
+ ], 46, _hoisted_2);
387
407
  }), 128))
388
408
  ], 34),
389
409
  _ctx.showInput ? (vue.openBlock(), vue.createBlock(SliderInput_vue_vue_type_script_setup_true_lang.default, {
@@ -397,12 +417,14 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
397
417
  readonly: vue.unref(mergedReadonly),
398
418
  error: vue.unref(mergedError),
399
419
  "aria-label": _ctx.ariaLabel,
420
+ "aria-labelledby": singleLabelledBy.value,
421
+ "aria-describedby": _ctx.$attrs["aria-describedby"],
400
422
  "aria-invalid": _ctx.$attrs["aria-invalid"],
401
423
  onChange: inputChange,
402
424
  onFocus: _cache[2] || (_cache[2] = ($event) => vue.unref(eventHandlers)?.onFocus?.()),
403
425
  onBlur: _cache[3] || (_cache[3] = ($event) => vue.unref(eventHandlers)?.onBlur?.())
404
- }, null, 8, ["model-value", "min", "max", "step", "range", "disabled", "readonly", "error", "aria-label", "aria-invalid"])) : vue.createCommentVNode("", true)
405
- ], 6);
426
+ }, null, 8, ["model-value", "min", "max", "step", "range", "disabled", "readonly", "error", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid"])) : vue.createCommentVNode("", true)
427
+ ], 16, _hoisted_1);
406
428
  };
407
429
  }
408
430
  });
@@ -18,6 +18,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
18
18
  readonly: Boolean,
19
19
  error: Boolean,
20
20
  ariaLabel: [String, Array],
21
+ ariaLabelledby: String,
22
+ ariaDescribedby: String,
21
23
  ariaInvalid: { type: [String, Boolean], default: void 0 }
22
24
  },
23
25
  emits: ["change", "focus", "blur"],
@@ -41,7 +43,12 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
41
43
  disabled: __props.disabled,
42
44
  readonly: __props.readonly,
43
45
  error: __props.error,
44
- "input-attrs": { "aria-label": label(0), "aria-invalid": __props.ariaInvalid },
46
+ "input-attrs": {
47
+ "aria-label": label(0),
48
+ "aria-labelledby": __props.ariaLabelledby,
49
+ "aria-describedby": __props.ariaDescribedby,
50
+ "aria-invalid": __props.ariaInvalid
51
+ },
45
52
  onChange: _cache[0] || (_cache[0] = (value) => emit("change", 0, value ?? void 0)),
46
53
  onFocus: _cache[1] || (_cache[1] = ($event) => emit("focus")),
47
54
  onBlur: _cache[2] || (_cache[2] = ($event) => emit("blur"))
@@ -55,7 +62,12 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
55
62
  disabled: __props.disabled,
56
63
  readonly: __props.readonly,
57
64
  error: __props.error,
58
- "input-attrs": { "aria-label": label(1), "aria-invalid": __props.ariaInvalid },
65
+ "input-attrs": {
66
+ "aria-label": label(1),
67
+ "aria-labelledby": __props.ariaLabelledby,
68
+ "aria-describedby": __props.ariaDescribedby,
69
+ "aria-invalid": __props.ariaInvalid
70
+ },
59
71
  onChange: _cache[3] || (_cache[3] = (value) => emit("change", 1, value ?? void 0)),
60
72
  onFocus: _cache[4] || (_cache[4] = ($event) => emit("focus")),
61
73
  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);