@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
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, ref, shallowRef, watch, nextTick, onBeforeUnmount, onDeactivated, onActivated, withDirectives, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createElementVNode, renderSlot, createCommentVNode, toDisplayString, createBlock, createVNode, withModifiers, withCtx } from "vue";
2
2
  import { IconClose } from "@maple-design/icons-vue";
3
3
  import { getRect, doubleRaf } from "@maple-design/shared-vue";
4
- import { Button } from "../button/index.mjs";
4
+ import MpButton from "../button/base.mjs";
5
5
  import { useLock } from "../context/lock.mjs";
6
6
  import { useZIndex } from "../context/zIndex.mjs";
7
7
  import "../divider/index.mjs";
@@ -64,29 +64,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
64
64
  let stopInactiveFocusTracking;
65
65
  function trackInactiveFocus() {
66
66
  stopInactiveFocusTracking?.();
67
- const document = card.value?.ownerDocument;
68
- if (!document) {
67
+ const document2 = card.value?.ownerDocument;
68
+ if (!document2) {
69
69
  return;
70
70
  }
71
71
  const remember = (target) => {
72
72
  const element = target;
73
- if (element && typeof element.focus === "function" && !card.value?.contains(element) && element !== document.body && element !== document.documentElement) {
73
+ if (element && typeof element.focus === "function" && !card.value?.contains(element) && element !== document2.body && element !== document2.documentElement) {
74
74
  returnFocus = element;
75
75
  }
76
76
  };
77
- remember(document.activeElement);
77
+ remember(document2.activeElement);
78
78
  const onFocus = (event) => remember(event.target);
79
- document.addEventListener("focusin", onFocus, true);
80
- stopInactiveFocusTracking = () => document.removeEventListener("focusin", onFocus, true);
79
+ document2.addEventListener("focusin", onFocus, true);
80
+ stopInactiveFocusTracking = () => document2.removeEventListener("focusin", onFocus, true);
81
81
  }
82
82
  function updateReturnFocus(open) {
83
- const document = card.value?.ownerDocument;
84
- if (!document) {
83
+ const document2 = card.value?.ownerDocument;
84
+ if (!document2) {
85
85
  return;
86
86
  }
87
- const focused = document.activeElement;
87
+ const focused = document2.activeElement;
88
88
  if (open) {
89
- returnFocus = focused && focused !== document.body && focused !== document.documentElement ? focused : null;
89
+ returnFocus = focused && focused !== document2.body && focused !== document2.documentElement ? focused : null;
90
90
  return;
91
91
  }
92
92
  const target = returnFocus;
@@ -100,6 +100,37 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
100
100
  const { onStackTop } = usePopupLayer(wantsFloating, zIndex, () => card.value?.ownerDocument, true);
101
101
  const available = () => active && !disposed;
102
102
  let openingWaiting = false;
103
+ let cancelOpeningFrames;
104
+ function waitForOwnerFrames(view) {
105
+ cancelOpeningFrames?.();
106
+ return new Promise((resolve) => {
107
+ let handle;
108
+ let settled = false;
109
+ const finish = (completed) => {
110
+ if (settled) {
111
+ return;
112
+ }
113
+ settled = true;
114
+ if (cancelOpeningFrames === cancel) {
115
+ cancelOpeningFrames = void 0;
116
+ }
117
+ resolve(completed);
118
+ };
119
+ const cancel = () => {
120
+ if (handle !== void 0) {
121
+ view.cancelAnimationFrame?.(handle);
122
+ }
123
+ finish(false);
124
+ };
125
+ cancelOpeningFrames = cancel;
126
+ handle = view.requestAnimationFrame(() => {
127
+ if (settled) {
128
+ return;
129
+ }
130
+ handle = view.requestAnimationFrame(() => finish(true));
131
+ });
132
+ });
133
+ }
103
134
  let reducedMotion = false;
104
135
  let stopMotionTracking;
105
136
  function trackMotion(element) {
@@ -150,6 +181,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
150
181
  wantsFloating,
151
182
  (value) => {
152
183
  const token = ++generation;
184
+ cancelOpeningFrames?.();
153
185
  if (!active) {
154
186
  if (!disposed && value) {
155
187
  trackInactiveFocus();
@@ -181,6 +213,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
181
213
  return;
182
214
  }
183
215
  const token = ++generation;
216
+ cancelOpeningFrames?.();
184
217
  const element = card.value;
185
218
  let consumed = false;
186
219
  clearTimeout(floater.value ?? void 0);
@@ -208,7 +241,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
208
241
  dropdownFloaterLeft = floaterLeft.value;
209
242
  showFloatingButtons.value = true;
210
243
  if (!reducedMotion) {
211
- await doubleRaf();
244
+ const view = element.ownerDocument.defaultView;
245
+ if (view && typeof document !== "undefined" && element.ownerDocument !== document && typeof view.requestAnimationFrame === "function") {
246
+ if (!await waitForOwnerFrames(view)) {
247
+ return;
248
+ }
249
+ } else {
250
+ await doubleRaf();
251
+ }
212
252
  }
213
253
  if (!current(token, element) || !wantsFloating()) {
214
254
  return;
@@ -231,6 +271,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
231
271
  return;
232
272
  }
233
273
  const token = ++generation;
274
+ cancelOpeningFrames?.();
234
275
  const element = card.value;
235
276
  let consumed = false;
236
277
  clearTimeout(dropper);
@@ -328,6 +369,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
328
369
  }
329
370
  });
330
371
  function cleanup() {
372
+ cancelOpeningFrames?.();
331
373
  openingWaiting = false;
332
374
  active = false;
333
375
  generation++;
@@ -473,7 +515,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
473
515
  })
474
516
  }, [
475
517
  renderSlot(_ctx.$slots, "close-button", {}, () => [
476
- createVNode(unref(Button), {
518
+ createVNode(unref(MpButton), {
477
519
  "data-card-cover": "",
478
520
  class: normalizeClass(unref(classes)(unref(n)("close-button"), unref(n)("$-elevation--6"))),
479
521
  "aria-label": props.closeButtonAriaLabel ?? unref(closeLabel),
@@ -28,7 +28,7 @@
28
28
  --mp-carousel-card-opacity: 0.6;
29
29
  --mp-carousel-focus-width: 2px;
30
30
  --mp-carousel-focus-offset: 2px;
31
- --mp-carousel-focus-color: var(--mp-sys-color-content-brand);
31
+ --mp-carousel-focus-color: var(--mp-sys-color-action-primary);
32
32
  }
33
33
  .mp-carousel {
34
34
  position: relative;
@@ -1,10 +1,17 @@
1
1
  import { computed } from "vue";
2
- import "../locale/index.mjs";
3
2
  import { injectLocaleProvider } from "../locale-provider/provide.mjs";
4
- import { t } from "../locale/state.mjs";
3
+ import { t, defaultLocaleReady } from "../locale/state.mjs";
4
+ import { defaultCarouselGoto, defaultCarouselSlide, defaultCarouselNext, defaultCarouselPrevious, defaultCarouselLabel } from "../locale/zh-CN.mjs";
5
5
  function useCarouselLocale() {
6
6
  const { t: translate } = injectLocaleProvider();
7
- const message = (key) => String((translate || t)(key));
7
+ const defaults = {
8
+ "carousel.label": defaultCarouselLabel,
9
+ "carousel.previous": defaultCarouselPrevious,
10
+ "carousel.next": defaultCarouselNext,
11
+ "carousel.slide": defaultCarouselSlide,
12
+ "carousel.goto": defaultCarouselGoto
13
+ };
14
+ const message = (key) => String(translate ? translate(key) : t(key) ?? (!defaultLocaleReady.value ? defaults[key] : void 0));
8
15
  return computed(() => ({
9
16
  label: message("carousel.label"),
10
17
  previous: message("carousel.previous"),
@@ -4,7 +4,7 @@ import { useFieldTexts } from "../_components/field-presentation/texts.mjs";
4
4
  import { selectionEditorSurface } from "../_components/selected-options/context.mjs";
5
5
  import _sfc_main$1 from "../_components/selected-options/SelectedOptions.vue.mjs";
6
6
  import { provideFormErrorDescriptionBoundary } from "../form/error-description.mjs";
7
- import { Input } from "../input/index.mjs";
7
+ import MpInput from "../input/base.mjs";
8
8
  import { createNamespace } from "../utils/components.mjs";
9
9
  import BaseCascaderPanel from "./base-cascader-panel.mjs";
10
10
  import CascaderSearchPanel from "./cascader-search-panel.mjs";
@@ -36,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
36
36
  onClear: _ctx.controller.clearSelection
37
37
  }, {
38
38
  default: withCtx(() => [
39
- _ctx.searchable ? (openBlock(), createBlock(unref(Input), {
39
+ _ctx.searchable ? (openBlock(), createBlock(unref(MpInput), {
40
40
  key: 0,
41
41
  "model-value": _ctx.controller.computedInputValue,
42
42
  "edit-mode": "direct",
@@ -2,10 +2,12 @@ import { defineComponent, inject, useId, ref, computed, onDeactivated, onBeforeU
2
2
  import { IconCheck, IconLoading, IconRight } from "@maple-design/icons-vue";
3
3
  import { isolateEditorForm } from "../_components/field-presentation/form-bridge.mjs";
4
4
  import { isFunction } from "../_utils/is.mjs";
5
- import { Checkbox } from "../checkbox/index.mjs";
5
+ import _Checkbox from "../checkbox/base.mjs";
6
6
  import { getPrefixCls, createNamespace } from "../utils/components.mjs";
7
7
  import { cascaderInjectionKey } from "./context.mjs";
8
8
  import { getCheckedStatus, getOptionLabel } from "./utils.mjs";
9
+ const INTERACTIVE_ROLES = /* @__PURE__ */ new Set(["button", "link", "checkbox", "radio", "switch", "textbox", "combobox", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "treeitem", "gridcell", "slider", "spinbutton", "tab"]);
10
+ const CONCRETE_ROLES = new Set("alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox comment complementary contentinfo definition deletion directory document emphasis feed figure form generic grid gridcell group heading image img insertion link list listbox listitem log main mark marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox sectionfooter sectionheader separator slider spinbutton status strong suggestion subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem doc-abstract doc-acknowledgments doc-afterword doc-appendix doc-backlink doc-biblioentry doc-bibliography doc-biblioref doc-chapter doc-colophon doc-conclusion doc-cover doc-credit doc-credits doc-dedication doc-endnote doc-endnotes doc-epigraph doc-epilogue doc-errata doc-example doc-footnote doc-foreword doc-glossary doc-glossref doc-index doc-introduction doc-noteref doc-notice doc-pagebreak doc-pagefooter doc-pageheader doc-pagelist doc-part doc-preface doc-prologue doc-pullquote doc-qna doc-subtitle doc-tip doc-toc graphics-document graphics-object graphics-symbol".split(" "));
9
11
  function ownsOptionClick(event) {
10
12
  if (event.defaultPrevented) {
11
13
  return false;
@@ -29,7 +31,14 @@ function ownsOptionClick(event) {
29
31
  if (element?.nodeType !== 1 || typeof element.matches !== "function") {
30
32
  continue;
31
33
  }
32
- if (element.matches('li[data-cascader-key], button, a[href], input, select, textarea, summary, [contenteditable]:not([contenteditable="false"]), [role="button"], [role="link"], [role="checkbox"], [role="radio"], [role="switch"], [role="textbox"], [role="combobox"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"], [role="treeitem"], [role="gridcell"], [role="slider"], [role="spinbutton"], [role="tab"]')) {
34
+ const primaryRole = element.getAttribute("role")?.trim().split(/\s+/).find((role) => CONCRETE_ROLES.has(role));
35
+ if (primaryRole && INTERACTIVE_ROLES.has(primaryRole)) {
36
+ return false;
37
+ }
38
+ if (element.hasAttribute("tabindex") && element.tabIndex >= 0) {
39
+ return false;
40
+ }
41
+ if (element.matches('li[data-cascader-key], button, a[href], input, select, textarea, summary, audio[controls], video[controls], [contenteditable]:not([contenteditable="false"])')) {
33
42
  return false;
34
43
  }
35
44
  if (element.matches("label") && (element.htmlFor || element.querySelector("input, button, select, textarea"))) {
@@ -110,7 +119,9 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
110
119
  },
111
120
  onMouseleave: (event) => {
112
121
  const element = event.currentTarget;
113
- const focused = element.ownerDocument.activeElement;
122
+ const nodeRoot = element.getRootNode();
123
+ const focusRoot = "activeElement" in nodeRoot ? nodeRoot : element.ownerDocument;
124
+ const focused = focusRoot.activeElement;
114
125
  let focusedOption = focused?.closest("[data-cascader-key]");
115
126
  const panelSelector = `.${getPrefixCls("cascader")}-panel, .${getPrefixCls("cascader")}-editor-panel`;
116
127
  const panel = element.closest(panelSelector);
@@ -197,7 +208,7 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
197
208
  }, events), [props.multiple && createVNode("span", {
198
209
  "class": `${prefixCls}-checkbox`,
199
210
  "onClick": (event) => event.stopPropagation()
200
- }, [createVNode(Checkbox, {
211
+ }, [createVNode(_Checkbox, {
201
212
  "editMode": "direct",
202
213
  "uninjectGroupContext": true,
203
214
  "modelValue": Boolean(checkedStatus.value.checked),
@@ -209,9 +220,7 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
209
220
  if (props.option.disabled || props.option.selectionDisabled) {
210
221
  return;
211
222
  }
212
- const task = handlePathChange(new Event("change"));
213
223
  cascaderCtx.onClickOption?.(props.option, Boolean(checked));
214
- return task;
215
224
  }
216
225
  }, null)]), createVNode("div", {
217
226
  "class": `${prefixCls}-label`
@@ -2,6 +2,7 @@ import { h } from "vue";
2
2
  import { optionValueText } from "../_components/field-presentation/option-labels.mjs";
3
3
  import _sfc_main from "./CascaderEditor.vue.mjs";
4
4
  const cascaderFieldAdapter = {
5
+ selectionConfirmation: "update",
5
6
  pauseSelectionWhileLoading: true,
6
7
  methods: ["focus", "blur", "refresh"],
7
8
  defaultPresentation: "popup",
@@ -6,6 +6,8 @@ import { emptyValueProp } from "../utils/empty-value.mjs";
6
6
  import { popupContainerProp } from "../utils/popup-container.mjs";
7
7
  const cascaderProps = {
8
8
  ...fieldLoadingProps,
9
+ /** 弹出编辑是否需要确认;未设置时单选即提交,多选保留确认。 */
10
+ needConfirm: { type: Boolean, default: void 0 },
9
11
  openTriggerTarget: openTriggerTargetProp,
10
12
  /** 清空动作产生的模型值;省略保留原默认值。 */
11
13
  /** 内置本地过滤是否区分大小写;自定义过滤函数优先。 */
@@ -11,7 +11,7 @@
11
11
  --mp-cascader-size-item-height: 36px;
12
12
  --mp-cascader-font-item-size: var(--mp-sys-font-size-md);
13
13
  --mp-cascader-margin-item-icon-left: var(--mp-sys-space-5);
14
- --mp-cascader-item-check-color: var(--mp-sys-color-content-primary);
14
+ --mp-cascader-item-check-color: var(--mp-sys-color-action-primary);
15
15
  --mp-cascader-item-check-size: var(--mp-sys-font-size-md);
16
16
  --mp-cascader-item-text-color: var(--mp-sys-color-content-primary);
17
17
  --mp-cascader-item-icon-color: var(--mp-sys-color-content-secondary);
@@ -19,11 +19,11 @@
19
19
  --mp-cascader-padding-item-right: var(--mp-sys-space-5);
20
20
  --mp-cascader-size-item-icon: 12px;
21
21
  --mp-cascader-item-text-color-hover: var(--mp-cascader-item-text-color);
22
- --mp-cascader-item-text-color-active: var(--mp-cascader-item-text-color);
22
+ --mp-cascader-item-text-color-active: var(--mp-sys-color-action-primary);
23
23
  --mp-cascader-item-text-color-disabled: var(--mp-sys-color-content-disabled);
24
24
  --mp-cascader-item-text-color-disabled-active: var(--mp-sys-color-content-disabled);
25
- --mp-cascader-item-bg-active: var(--mp-color-fill-2);
26
- --mp-cascader-item-bg-hover: var(--mp-cascader-item-bg-active);
25
+ --mp-cascader-item-bg-active: transparent;
26
+ --mp-cascader-item-bg-hover: var(--mp-color-fill-2);
27
27
  --mp-cascader-item-bg-disabled: transparent;
28
28
  --mp-cascader-item-bg-disabled-active: var(--mp-color-fill-2);
29
29
  --mp-cascader-checkbox-bg-hover: var(--mp-color-fill-3);
@@ -222,17 +222,44 @@
222
222
  .mp-cascader-search-option-disabled:hover .mp-cascader-option-check {
223
223
  color: var(--mp-cascader-item-text-color-disabled);
224
224
  }
225
- .mp-cascader-option-active {
226
- color: var(--mp-cascader-item-text-color-active);
227
- background-color: var(--mp-cascader-item-bg-active);
225
+ .mp-cascader-option-active,
226
+ .mp-cascader-search-option-active {
227
+ color: var(--mp-cascader-item-text-color-hover);
228
+ background-color: var(--mp-cascader-item-bg-hover);
228
229
  transition: all var(--mp-sys-motion-duration-standard) var(--mp-sys-motion-easing-standard);
229
230
  }
230
- .mp-cascader-option-active:hover {
231
+ .mp-cascader-option-selected,
232
+ .mp-cascader-search-option-selected {
231
233
  color: var(--mp-cascader-item-text-color-active);
232
234
  background-color: var(--mp-cascader-item-bg-active);
233
235
  }
236
+ .mp-cascader-option-selected:hover,
237
+ .mp-cascader-search-option-selected:hover,
238
+ .mp-cascader-option-selected.mp-cascader-option-active,
239
+ .mp-cascader-search-option-selected.mp-cascader-option-active,
240
+ .mp-cascader-option-selected.mp-cascader-search-option-active,
241
+ .mp-cascader-search-option-selected.mp-cascader-search-option-active,
242
+ .mp-cascader-option-selected.mp-cascader-search-option-hover,
243
+ .mp-cascader-search-option-selected.mp-cascader-search-option-hover {
244
+ color: var(--mp-cascader-item-text-color-active);
245
+ background-color: var(--mp-cascader-item-bg-hover);
246
+ }
234
247
  .mp-cascader-option-active.mp-cascader-option-disabled,
235
- .mp-cascader-option-active.mp-cascader-option-disabled:hover {
248
+ .mp-cascader-option-active.mp-cascader-search-option-disabled,
249
+ .mp-cascader-search-option-active.mp-cascader-option-disabled,
250
+ .mp-cascader-search-option-active.mp-cascader-search-option-disabled,
251
+ .mp-cascader-option-active.mp-cascader-option-disabled:hover,
252
+ .mp-cascader-option-active.mp-cascader-search-option-disabled:hover,
253
+ .mp-cascader-search-option-active.mp-cascader-option-disabled:hover,
254
+ .mp-cascader-search-option-active.mp-cascader-search-option-disabled:hover,
255
+ .mp-cascader-option-selected.mp-cascader-option-disabled,
256
+ .mp-cascader-option-selected.mp-cascader-search-option-disabled,
257
+ .mp-cascader-search-option-selected.mp-cascader-option-disabled,
258
+ .mp-cascader-search-option-selected.mp-cascader-search-option-disabled,
259
+ .mp-cascader-option-selected.mp-cascader-option-disabled:hover,
260
+ .mp-cascader-option-selected.mp-cascader-search-option-disabled:hover,
261
+ .mp-cascader-search-option-selected.mp-cascader-option-disabled:hover,
262
+ .mp-cascader-search-option-selected.mp-cascader-search-option-disabled:hover {
236
263
  color: var(--mp-cascader-item-text-color-disabled-active);
237
264
  background-color: var(--mp-cascader-item-bg-disabled-active);
238
265
  }
@@ -8,6 +8,7 @@ import '../../trigger/style/index.mjs'
8
8
  import '../../empty/style/index.mjs'
9
9
  import '../../loading/style/index.mjs'
10
10
  import '../../button/style/index.mjs'
11
+ import '../../checkbox/style/index.mjs'
11
12
  import '../../picker/style/index.mjs'
12
13
  import '../../popup/style/index.mjs'
13
14
  import './index.css'
@@ -6,11 +6,13 @@ function useCascaderFocus(activeKey) {
6
6
  onBeforeUnmount(() => cancelPendingFocus?.());
7
7
  return (root, option, originPanel, panelSelector) => {
8
8
  const key = activeKey.value;
9
- if (!key || !root.contains(option) || root.ownerDocument.activeElement !== option) {
9
+ const document = root.ownerDocument;
10
+ const nodeRoot = root.getRootNode();
11
+ const focusRoot = "activeElement" in nodeRoot ? nodeRoot : document;
12
+ if (!key || !root.contains(option) || focusRoot.activeElement !== option) {
10
13
  return;
11
14
  }
12
15
  cancelPendingFocus?.();
13
- const document = root.ownerDocument;
14
16
  const view = document.defaultView;
15
17
  if (!view) {
16
18
  return;
@@ -34,7 +36,7 @@ function useCascaderFocus(activeKey) {
34
36
  }
35
37
  };
36
38
  const onFocus = (next) => {
37
- if (next.target !== option) {
39
+ if (next.target !== option && !next.composedPath().includes(option)) {
38
40
  cleanup();
39
41
  }
40
42
  };
@@ -42,9 +44,10 @@ function useCascaderFocus(activeKey) {
42
44
  if (done) {
43
45
  return;
44
46
  }
45
- const focused = document.activeElement;
46
- const lostToRemoval = !option.isConnected && (focused === document.body || focused === document.documentElement);
47
- if (!root.isConnected || activeKey.value !== key || focused !== option && !lostToRemoval) {
47
+ const focused = focusRoot.activeElement;
48
+ const docFocus = document.activeElement;
49
+ const lostToRemoval = !option.isConnected && (docFocus === document.body || docFocus === document.documentElement) && (focused === null || focused === document.body || focused === document.documentElement);
50
+ if (!root.isConnected || root.getRootNode() !== nodeRoot || activeKey.value !== key || focused !== option && !lostToRemoval) {
48
51
  cleanup();
49
52
  return;
50
53
  }
@@ -6,7 +6,7 @@ import { ChoiceLabel } from "./choice-label.mjs";
6
6
  import { normalizeChoiceOptions } from "./choice-options.mjs";
7
7
  import { useChoiceState, choiceLimit } from "./choice-state.mjs";
8
8
  import { checkboxGroupKey } from "./context.mjs";
9
- import _Checkbox from "./presentation.mjs";
9
+ import Checkbox from "./presentation.mjs";
10
10
  import { checkboxGroupProps } from "./props.mjs";
11
11
  import { useCheckboxGroupMethods } from "./use-checkbox-group-methods.mjs";
12
12
  import { useChoiceForm } from "./use-choice-form.mjs";
@@ -75,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
75
75
  "aria-disabled": unref(mergedDisabled) || void 0
76
76
  }), [
77
77
  props.options !== void 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(normalizedOptions.value, (option) => {
78
- return openBlock(), createBlock(unref(_Checkbox), {
78
+ return openBlock(), createBlock(unref(Checkbox), {
79
79
  key: `${typeof option.value}:${String(option.value)}`,
80
80
  "edit-mode": "direct",
81
81
  value: option.value,
@@ -0,0 +1,7 @@
1
+ import { withPropsDefaultsSetter } from "../utils/components.mjs";
2
+ import Checkbox from "./presentation.mjs";
3
+ import { checkboxProps } from "./props.mjs";
4
+ const _Checkbox = withPropsDefaultsSetter(Checkbox, checkboxProps);
5
+ export {
6
+ _Checkbox as default
7
+ };
@@ -1,6 +1,6 @@
1
1
  import { withInstall, withPropsDefaultsSetter } from "../utils/components.mjs";
2
+ import _Checkbox from "./base.mjs";
2
3
  import CheckboxGroup from "./group-presentation.mjs";
3
- import _Checkbox from "./presentation.mjs";
4
4
  import { checkboxProps, checkboxGroupProps } from "./props.mjs";
5
5
  const Checkbox = withInstall(
6
6
  _Checkbox,
@@ -1,6 +1,6 @@
1
1
  import { withFieldPresentation } from "../_components/field-presentation/with-field-presentation.mjs";
2
2
  import _sfc_main from "./Checkbox.vue.mjs";
3
- const _Checkbox = withFieldPresentation(_sfc_main, { methods: ["toggle", "focus", "blur"] });
3
+ const Checkbox = withFieldPresentation(_sfc_main, { methods: ["toggle", "focus", "blur"] });
4
4
  export {
5
- _Checkbox as default
5
+ Checkbox as default
6
6
  };
@@ -4,7 +4,7 @@
4
4
  :root,
5
5
  :where([data-mp-theme]) {
6
6
  --mp-checkbox-control-color: var(--mp-sys-color-content-secondary);
7
- --mp-checkbox-control-color-checked: var(--mp-sys-color-content-brand);
7
+ --mp-checkbox-control-color-checked: var(--mp-sys-color-action-primary);
8
8
  --mp-checkbox-control-color-disabled: var(--mp-sys-color-content-disabled);
9
9
  --mp-checkbox-control-color-error: var(--mp-sys-color-content-danger);
10
10
  --mp-checkbox-control-size: 24px;
@@ -46,9 +46,12 @@ function useCountdown(props, emit) {
46
46
  let resumeOnActivate = false;
47
47
  let generation = 0;
48
48
  let handle;
49
- function display() {
49
+ function updateDisplay() {
50
50
  timeData.value = splitTime(remaining);
51
51
  showTime.value = parseFormat(props.format, timeData.value);
52
+ }
53
+ function display() {
54
+ updateDisplay();
52
55
  emit("change", timeData.value);
53
56
  }
54
57
  function cancel() {
@@ -93,11 +96,15 @@ function useCountdown(props, emit) {
93
96
  }
94
97
  function pause() {
95
98
  resumeOnActivate = false;
96
- if (running) {
99
+ const wasRunning = running;
100
+ if (wasRunning) {
97
101
  remaining = Math.max(0, deadline - performance.now());
98
102
  }
99
103
  running = false;
100
104
  cancel();
105
+ if (wasRunning && mounted) {
106
+ updateDisplay();
107
+ }
101
108
  }
102
109
  function reset() {
103
110
  if (!mounted) {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot, normalizeProps, guardReactiveProps, createBlock, withCtx, createVNode, createCommentVNode, createTextVNode, toDisplayString } from "vue";
2
2
  import { IconThunderbolt } from "@maple-design/icons-vue";
3
- import { Button } from "../button/index.mjs";
3
+ import MpButton from "../button/base.mjs";
4
4
  import { createNamespace } from "../utils/components.mjs";
5
5
  import { usePanelActionsLocale } from "./presentation/use-panel-actions-locale.mjs";
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -31,7 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  selectNow: () => emit("select-now"),
32
32
  nowDisabled: _ctx.nowDisabled
33
33
  })), () => [
34
- _ctx.showQuick ? (openBlock(), createBlock(unref(Button), {
34
+ _ctx.showQuick ? (openBlock(), createBlock(unref(MpButton), {
35
35
  key: 0,
36
36
  variant: "text",
37
37
  status: "primary",
@@ -49,7 +49,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
49
49
  ]),
50
50
  _: 1
51
51
  }, 8, ["class", "aria-label", "aria-pressed", "disabled"])) : createCommentVNode("", true),
52
- _ctx.showNow ? (openBlock(), createBlock(unref(Button), {
52
+ _ctx.showNow ? (openBlock(), createBlock(unref(MpButton), {
53
53
  key: 1,
54
54
  variant: "text",
55
55
  disabled: _ctx.nowDisabled,
@@ -60,7 +60,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
60
60
  ]),
61
61
  _: 1
62
62
  }, 8, ["disabled"])) : createCommentVNode("", true),
63
- _ctx.showConfirm ? (openBlock(), createBlock(unref(Button), {
63
+ _ctx.showConfirm ? (openBlock(), createBlock(unref(MpButton), {
64
64
  key: 2,
65
65
  status: "primary",
66
66
  disabled: !_ctx.canConfirm,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, unref, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock, withCtx, resolveDynamicComponent, createTextVNode, toDisplayString, createCommentVNode } from "vue";
2
- import { Button } from "../button/index.mjs";
2
+ import MpButton from "../button/base.mjs";
3
3
  import { createNamespace } from "../utils/components.mjs";
4
4
  import { useRangeQuickPanel } from "./range-quick-selection.mjs";
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -16,7 +16,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16
16
  "aria-label": "快捷选择"
17
17
  }, [
18
18
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(quick).items.value, (item, index) => {
19
- return openBlock(), createBlock(unref(Button), {
19
+ return openBlock(), createBlock(unref(MpButton), {
20
20
  key: index,
21
21
  variant: "text",
22
22
  status: "primary",
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, Fragment, renderList, createBlock, withCtx, resolveDynamicComponent, createTextVNode, toDisplayString } from "vue";
2
- import { Button } from "../button/index.mjs";
2
+ import MpButton from "../button/base.mjs";
3
3
  import { createNamespace } from "../utils/components.mjs";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  ...{ name: createNamespace("date-shortcuts").name },
@@ -18,7 +18,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
18
18
  class: normalizeClass(unref(classes)(unref(n)(), unref(n)(`--${_ctx.position}`)))
19
19
  }, [
20
20
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.shortcuts, (shortcut, index) => {
21
- return openBlock(), createBlock(unref(Button), {
21
+ return openBlock(), createBlock(unref(MpButton), {
22
22
  key: index,
23
23
  variant: "text",
24
24
  disabled: _ctx.blocked || shortcut.disabled,
@@ -3,12 +3,11 @@ import { isFieldOpenClick } from "../_components/picker-field/open-trigger.mjs";
3
3
  import _sfc_main$1 from "../_components/picker-field/PickerField.vue.mjs";
4
4
  import { provideRangeField } from "../_components/picker-field/range-field-context.mjs";
5
5
  import { fieldDecoratorProps } from "../field-decorator/props.mjs";
6
- import "../locale/index.mjs";
6
+ import { dateText } from "../locale/date-text.mjs";
7
7
  import { isDateSelectionValid } from "./date-rules.mjs";
8
8
  import { dateEventPayload, formatDateValue } from "./date-value.mjs";
9
9
  import _sfc_main from "./DatePanel.vue.mjs";
10
10
  import { dateFieldPanelOptions } from "./field-panel-options.mjs";
11
- import { t } from "../locale/state.mjs";
12
11
  function dateFieldAdapter(range) {
13
12
  return {
14
13
  methods: ["focus", "blur"],
@@ -24,7 +23,7 @@ function dateFieldAdapter(range) {
24
23
  class: ["mp-date-range", attrs.class],
25
24
  texts: [0, 1].map((index) => formatDateValue(value?.[index], props)),
26
25
  placeholder: Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder,
27
- placeholders: Array.isArray(props.placeholder) ? props.placeholder : typeof props.placeholder === "string" ? [props.placeholder, props.placeholder] : [t("dateRangeStart"), t("dateRangeEnd")],
26
+ placeholders: Array.isArray(props.placeholder) ? props.placeholder : typeof props.placeholder === "string" ? [props.placeholder, props.placeholder] : [dateText("dateRangeStart"), dateText("dateRangeEnd")],
28
27
  range: true,
29
28
  openTriggerTarget: props.openTriggerTarget,
30
29
  separator: props.separator,
@@ -4,16 +4,15 @@ import dayjs from "dayjs";
4
4
  import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
5
5
  import isSameOrBefore from "dayjs/plugin/isSameOrBefore.js";
6
6
  import { navigateTemporalGrid } from "../../_utils/temporal-keyboard.mjs";
7
- import { Button } from "../../button/index.mjs";
8
- import "../../locale/index.mjs";
7
+ import MpButton from "../../button/base.mjs";
9
8
  import { injectLocaleProvider } from "../../locale-provider/provide.mjs";
9
+ import { dateText } from "../../locale/date-text.mjs";
10
10
  import { createNamespace } from "../../utils/components.mjs";
11
11
  import { calendarMonthDays } from "../../utils/picker-data.mjs";
12
12
  import { isRangeHighlighted } from "../range-highlight.mjs";
13
13
  import { useCalendarRangeStyle } from "../use-calendar-range-style.mjs";
14
14
  import PanelHeader from "./PanelHeader.vue.mjs";
15
15
  import { WEEK_HEADER } from "../presentation-props.mjs";
16
- import { t } from "../../locale/state.mjs";
17
16
  dayjs.extend(isSameOrBefore);
18
17
  dayjs.extend(isSameOrAfter);
19
18
  const { n, classes } = createNamespace("day-picker");
@@ -21,7 +20,7 @@ const { n: nDate } = createNamespace("date-picker");
21
20
  const _sfc_main = defineComponent({
22
21
  name: createNamespace("day-picker-panel").name,
23
22
  components: {
24
- MpButton: Button,
23
+ MpButton,
25
24
  PanelHeader
26
25
  },
27
26
  props: {
@@ -82,7 +81,7 @@ const _sfc_main = defineComponent({
82
81
  }
83
82
  return [...WEEK_HEADER.slice(index), ...WEEK_HEADER.slice(0, index)];
84
83
  });
85
- const getDayAbbr = (key) => (pt || t)("datePickerWeekDict")?.[key].abbr ?? "";
84
+ const getDayAbbr = (key) => (pt || dateText)("datePickerWeekDict")?.[key].abbr ?? "";
86
85
  const filterDay = (day) => day > 0 ? day : "";
87
86
  const days = computed(() => {
88
87
  const {