@cldemo/ui-kit 1.0.9 → 1.0.11

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 (329) hide show
  1. package/COMPONENT_CATALOG.md +2 -2
  2. package/buildLibs/all/index.cjs +2 -5
  3. package/buildLibs/all/index.css +1 -0
  4. package/buildLibs/all/index.js +82 -6
  5. package/buildLibs/mobile/index.cjs +2 -5
  6. package/buildLibs/mobile/index.css +1 -0
  7. package/buildLibs/mobile/index.js +50 -6
  8. package/buildLibs/utils/Element/ClBadge.d.ts +3 -0
  9. package/buildLibs/utils/Element/ClBreadcrumb.d.ts +3 -0
  10. package/buildLibs/utils/Element/ClButton.d.ts +3 -0
  11. package/buildLibs/utils/Element/ClCallout.d.ts +3 -0
  12. package/buildLibs/utils/Element/ClCard.d.ts +3 -0
  13. package/buildLibs/utils/Element/ClCardColor.d.ts +3 -0
  14. package/buildLibs/utils/Element/ClCheckbox.d.ts +3 -0
  15. package/buildLibs/utils/Element/ClCheckboxOne.cjs +2 -0
  16. package/buildLibs/utils/Element/ClCheckboxOne.cjs.map +1 -0
  17. package/buildLibs/utils/Element/ClCheckboxOne.d.ts +3 -0
  18. package/buildLibs/utils/Element/ClCheckboxOne.js +5 -0
  19. package/buildLibs/utils/Element/ClCheckboxOne.js.map +1 -0
  20. package/buildLibs/utils/Element/ClClipboard.d.ts +3 -0
  21. package/buildLibs/utils/Element/ClCollapse.d.ts +3 -0
  22. package/buildLibs/utils/Element/ClCountDown.d.ts +3 -0
  23. package/buildLibs/utils/Element/ClCountUp.d.ts +3 -0
  24. package/buildLibs/utils/Element/ClCropper.d.ts +3 -0
  25. package/buildLibs/utils/Element/ClDarg.d.ts +3 -0
  26. package/buildLibs/utils/Element/ClDivider.d.ts +3 -0
  27. package/buildLibs/utils/Element/ClEllipsis.d.ts +3 -0
  28. package/buildLibs/utils/Element/ClEmpty.d.ts +3 -0
  29. package/buildLibs/utils/Element/ClForm.d.ts +3 -0
  30. package/buildLibs/utils/Element/ClFormGroup.d.ts +3 -0
  31. package/buildLibs/utils/Element/ClFormValidate.cjs +2 -0
  32. package/buildLibs/utils/Element/ClFormValidate.cjs.map +1 -0
  33. package/buildLibs/utils/Element/ClFormValidate.d.ts +3 -0
  34. package/buildLibs/utils/Element/ClFormValidate.js +5 -0
  35. package/buildLibs/utils/Element/ClFormValidate.js.map +1 -0
  36. package/buildLibs/utils/Element/ClIconFont.d.ts +3 -0
  37. package/buildLibs/utils/Element/ClImage.cjs +1 -1
  38. package/buildLibs/utils/Element/ClImage.d.ts +3 -0
  39. package/buildLibs/utils/Element/ClImage.js +1 -1
  40. package/buildLibs/utils/Element/ClInput.d.ts +3 -0
  41. package/buildLibs/utils/Element/ClInputCaptcha.d.ts +3 -0
  42. package/buildLibs/utils/Element/ClInputNumber.d.ts +3 -0
  43. package/buildLibs/utils/Element/ClInputNumberStepper.d.ts +3 -0
  44. package/buildLibs/utils/Element/ClInputPassword.d.ts +3 -0
  45. package/buildLibs/utils/Element/ClInputSearch.d.ts +3 -0
  46. package/buildLibs/utils/Element/ClInputTextarea.d.ts +3 -0
  47. package/buildLibs/utils/Element/ClLink.d.ts +3 -0
  48. package/buildLibs/utils/Element/ClLoad.d.ts +3 -0
  49. package/buildLibs/utils/Element/ClLoadFullCenter.cjs +2 -0
  50. package/buildLibs/utils/Element/ClLoadFullCenter.cjs.map +1 -0
  51. package/buildLibs/utils/Element/ClLoadFullCenter.css +1 -0
  52. package/buildLibs/utils/Element/ClLoadFullCenter.d.ts +3 -0
  53. package/buildLibs/utils/Element/ClLoadFullCenter.js +45 -0
  54. package/buildLibs/utils/Element/ClLoadFullCenter.js.map +1 -0
  55. package/buildLibs/utils/Element/ClLoadIng.cjs +2 -0
  56. package/buildLibs/utils/Element/ClLoadIng.cjs.map +1 -0
  57. package/buildLibs/utils/Element/ClLoadIng.d.ts +3 -0
  58. package/buildLibs/utils/Element/ClLoadIng.js +5 -0
  59. package/buildLibs/utils/Element/ClLoadIng.js.map +1 -0
  60. package/buildLibs/utils/Element/ClLoadScreen.d.ts +3 -0
  61. package/buildLibs/utils/Element/ClLoadWarp.cjs +2 -0
  62. package/buildLibs/utils/Element/ClLoadWarp.cjs.map +1 -0
  63. package/buildLibs/utils/Element/ClLoadWarp.css +1 -0
  64. package/buildLibs/utils/Element/ClLoadWarp.d.ts +3 -0
  65. package/buildLibs/utils/Element/ClLoadWarp.js +53 -0
  66. package/buildLibs/utils/Element/ClLoadWarp.js.map +1 -0
  67. package/buildLibs/utils/Element/ClModal.d.ts +3 -0
  68. package/buildLibs/utils/Element/ClOverlay.d.ts +3 -0
  69. package/buildLibs/utils/Element/ClProgress.d.ts +3 -0
  70. package/buildLibs/utils/Element/ClRadio.d.ts +3 -0
  71. package/buildLibs/utils/Element/ClRadioOne.cjs +2 -0
  72. package/buildLibs/utils/Element/ClRadioOne.cjs.map +1 -0
  73. package/buildLibs/utils/Element/ClRadioOne.d.ts +3 -0
  74. package/buildLibs/utils/Element/ClRadioOne.js +5 -0
  75. package/buildLibs/utils/Element/ClRadioOne.js.map +1 -0
  76. package/buildLibs/utils/Element/ClSlider.d.ts +3 -0
  77. package/buildLibs/utils/Element/ClSwitchery.d.ts +3 -0
  78. package/buildLibs/utils/Element/ClTags.d.ts +3 -0
  79. package/buildLibs/utils/Element/ClTransitionSlideupdown.cjs +2 -0
  80. package/buildLibs/utils/Element/ClTransitionSlideupdown.cjs.map +1 -0
  81. package/buildLibs/utils/Element/ClTransitionSlideupdown.d.ts +3 -0
  82. package/buildLibs/utils/Element/ClTransitionSlideupdown.js +5 -0
  83. package/buildLibs/utils/Element/ClTransitionSlideupdown.js.map +1 -0
  84. package/buildLibs/utils/Element/ClWaterfall.d.ts +3 -0
  85. package/buildLibs/utils/Element/ClWaterfallImage.cjs +2 -0
  86. package/buildLibs/utils/Element/ClWaterfallImage.cjs.map +1 -0
  87. package/buildLibs/utils/Element/ClWaterfallImage.css +1 -0
  88. package/buildLibs/utils/Element/ClWaterfallImage.d.ts +3 -0
  89. package/buildLibs/utils/Element/ClWaterfallImage.js +48 -0
  90. package/buildLibs/utils/Element/ClWaterfallImage.js.map +1 -0
  91. package/buildLibs/utils/Mobile/ClActionBar.d.ts +3 -0
  92. package/buildLibs/utils/Mobile/ClActionSheet.d.ts +3 -0
  93. package/buildLibs/utils/Mobile/ClAreaM.d.ts +3 -0
  94. package/buildLibs/utils/Mobile/ClBackTop.d.ts +3 -0
  95. package/buildLibs/utils/Mobile/ClBanner.cjs +1 -1
  96. package/buildLibs/utils/Mobile/ClBanner.d.ts +3 -0
  97. package/buildLibs/utils/Mobile/ClBanner.js +1 -1
  98. package/buildLibs/utils/Mobile/ClCalendarM.d.ts +3 -0
  99. package/buildLibs/utils/Mobile/ClCell.d.ts +3 -0
  100. package/buildLibs/utils/Mobile/ClCellSwipe.d.ts +3 -0
  101. package/buildLibs/utils/Mobile/ClCodeLegendM.d.ts +3 -0
  102. package/buildLibs/utils/Mobile/ClDropdownMenuM.cjs +1 -1
  103. package/buildLibs/utils/Mobile/ClDropdownMenuM.cjs.map +1 -1
  104. package/buildLibs/utils/Mobile/ClDropdownMenuM.d.ts +3 -0
  105. package/buildLibs/utils/Mobile/ClDropdownMenuM.js +13 -12
  106. package/buildLibs/utils/Mobile/ClDropdownMenuM.js.map +1 -1
  107. package/buildLibs/utils/Mobile/ClDropdownMenuMItem.cjs +2 -0
  108. package/buildLibs/utils/Mobile/ClDropdownMenuMItem.cjs.map +1 -0
  109. package/buildLibs/utils/Mobile/ClDropdownMenuMItem.d.ts +3 -0
  110. package/buildLibs/utils/Mobile/ClDropdownMenuMItem.js +160 -0
  111. package/buildLibs/utils/Mobile/ClDropdownMenuMItem.js.map +1 -0
  112. package/buildLibs/utils/Mobile/ClFloatingBubble.d.ts +3 -0
  113. package/buildLibs/utils/Mobile/ClFloatingPanel.d.ts +3 -0
  114. package/buildLibs/utils/Mobile/ClGrid.d.ts +3 -0
  115. package/buildLibs/utils/Mobile/ClHighlightM.d.ts +3 -0
  116. package/buildLibs/utils/Mobile/ClIndexBar.d.ts +3 -0
  117. package/buildLibs/utils/Mobile/ClInputOtp.d.ts +3 -0
  118. package/buildLibs/utils/Mobile/ClNavBar.d.ts +3 -0
  119. package/buildLibs/utils/Mobile/ClNoticeBar.d.ts +3 -0
  120. package/buildLibs/utils/Mobile/ClNotifyM.d.ts +3 -0
  121. package/buildLibs/utils/Mobile/ClNumberKeyboard.d.ts +3 -0
  122. package/buildLibs/utils/Mobile/ClPicker.cjs +1 -1
  123. package/buildLibs/utils/Mobile/ClPicker.d.ts +3 -0
  124. package/buildLibs/utils/Mobile/ClPicker.js +1 -1
  125. package/buildLibs/utils/Mobile/ClPickerCascader.d.ts +3 -0
  126. package/buildLibs/utils/Mobile/ClPickerDate.cjs +1 -1
  127. package/buildLibs/utils/Mobile/ClPickerDate.d.ts +3 -0
  128. package/buildLibs/utils/Mobile/ClPickerDate.js +1 -1
  129. package/buildLibs/utils/Mobile/ClPickerTime.cjs +1 -1
  130. package/buildLibs/utils/Mobile/ClPickerTime.d.ts +3 -0
  131. package/buildLibs/utils/Mobile/ClPickerTime.js +1 -1
  132. package/buildLibs/utils/Mobile/ClPopup.d.ts +3 -0
  133. package/buildLibs/utils/Mobile/ClPullToRefresh.cjs +1 -1
  134. package/buildLibs/utils/Mobile/ClPullToRefresh.d.ts +3 -0
  135. package/buildLibs/utils/Mobile/ClPullToRefresh.js +1 -1
  136. package/buildLibs/utils/Mobile/ClRate.d.ts +3 -0
  137. package/buildLibs/utils/Mobile/ClScrollCard.cjs +1 -1
  138. package/buildLibs/utils/Mobile/ClScrollCard.d.ts +3 -0
  139. package/buildLibs/utils/Mobile/ClScrollCard.js +1 -1
  140. package/buildLibs/utils/Mobile/ClShareSheet.d.ts +3 -0
  141. package/buildLibs/utils/Mobile/ClSidebar.d.ts +3 -0
  142. package/buildLibs/utils/Mobile/ClSidebarSelect.d.ts +3 -0
  143. package/buildLibs/utils/Mobile/ClSignature.d.ts +3 -0
  144. package/buildLibs/utils/Mobile/ClSteps.d.ts +3 -0
  145. package/buildLibs/utils/Mobile/ClSwipe.d.ts +3 -0
  146. package/buildLibs/utils/Mobile/ClTabM.d.ts +3 -0
  147. package/buildLibs/utils/Mobile/ClTabbar.d.ts +3 -0
  148. package/buildLibs/utils/Mobile/ClToast.d.ts +3 -0
  149. package/buildLibs/utils/Mobile/ClWatermark.d.ts +3 -0
  150. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BPgunUb2.js → Index.vue_vue_type_script_setup_true_lang-6KT1IHDu.js} +1 -1
  151. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BPgunUb2.js.map → Index.vue_vue_type_script_setup_true_lang-6KT1IHDu.js.map} +1 -1
  152. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B-yZtW91.js +71 -0
  153. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B-yZtW91.js.map +1 -0
  154. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-gtDsWrhd.js → Index.vue_vue_type_script_setup_true_lang-BDPkmgGP.js} +1 -1
  155. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-gtDsWrhd.js.map → Index.vue_vue_type_script_setup_true_lang-BDPkmgGP.js.map} +1 -1
  156. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-D_IwyxiV.js → Index.vue_vue_type_script_setup_true_lang-Bnjm8vi-.js} +1 -1
  157. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-D_IwyxiV.js.map → Index.vue_vue_type_script_setup_true_lang-Bnjm8vi-.js.map} +1 -1
  158. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Cpb9rd-y.js → Index.vue_vue_type_script_setup_true_lang-Bs8FGIQa.js} +1 -1
  159. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Cpb9rd-y.js.map → Index.vue_vue_type_script_setup_true_lang-Bs8FGIQa.js.map} +1 -1
  160. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-hm75HKxP.js → Index.vue_vue_type_script_setup_true_lang-C7FRB7fV.js} +1 -1
  161. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-hm75HKxP.js.map → Index.vue_vue_type_script_setup_true_lang-C7FRB7fV.js.map} +1 -1
  162. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Xe4BacqD.js → Index.vue_vue_type_script_setup_true_lang-CFzimlB_.js} +1 -1
  163. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Xe4BacqD.js.map → Index.vue_vue_type_script_setup_true_lang-CFzimlB_.js.map} +1 -1
  164. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Bp39ENoP.js → Index.vue_vue_type_script_setup_true_lang-CGeXNRtY.js} +1 -1
  165. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Bp39ENoP.js.map → Index.vue_vue_type_script_setup_true_lang-CGeXNRtY.js.map} +1 -1
  166. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-4NloX3Qk.js → Index.vue_vue_type_script_setup_true_lang-CSV9UWJx.js} +1 -1
  167. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-4NloX3Qk.js.map → Index.vue_vue_type_script_setup_true_lang-CSV9UWJx.js.map} +1 -1
  168. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-CRJ3-pTH.js → Index.vue_vue_type_script_setup_true_lang-ChE1tZwr.js} +1 -1
  169. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-CRJ3-pTH.js.map → Index.vue_vue_type_script_setup_true_lang-ChE1tZwr.js.map} +1 -1
  170. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CjgtxJ6a.js +2 -0
  171. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CjgtxJ6a.js.map +1 -0
  172. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-N1GhNa1r.js → Index.vue_vue_type_script_setup_true_lang-CpuYxzDD.js} +1 -1
  173. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-N1GhNa1r.js.map → Index.vue_vue_type_script_setup_true_lang-CpuYxzDD.js.map} +1 -1
  174. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CumTbPny.js +2 -0
  175. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CumTbPny.js.map +1 -0
  176. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-NdqbsOrG.js → Index.vue_vue_type_script_setup_true_lang-CvF_iIQS.js} +2 -2
  177. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-NdqbsOrG.js.map → Index.vue_vue_type_script_setup_true_lang-CvF_iIQS.js.map} +1 -1
  178. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CxVAWr6w.js +266 -0
  179. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CxVAWr6w.js.map +1 -0
  180. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-DgMvq-RQ.js → Index.vue_vue_type_script_setup_true_lang-DFKjhT_C.js} +1 -1
  181. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-DgMvq-RQ.js.map → Index.vue_vue_type_script_setup_true_lang-DFKjhT_C.js.map} +1 -1
  182. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-D22m4oiN.js → Index.vue_vue_type_script_setup_true_lang-DdWmaT86.js} +2 -2
  183. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-D22m4oiN.js.map → Index.vue_vue_type_script_setup_true_lang-DdWmaT86.js.map} +1 -1
  184. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BtoovAWs.js → Index.vue_vue_type_script_setup_true_lang-DxHfO8TH.js} +1 -1
  185. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BtoovAWs.js.map → Index.vue_vue_type_script_setup_true_lang-DxHfO8TH.js.map} +1 -1
  186. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-CW63TdvW.js → Index.vue_vue_type_script_setup_true_lang-HwprdMv4.js} +2 -2
  187. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-CW63TdvW.js.map → Index.vue_vue_type_script_setup_true_lang-HwprdMv4.js.map} +1 -1
  188. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BLp0owhs.js → Index.vue_vue_type_script_setup_true_lang-IGgTDykL.js} +1 -1
  189. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BLp0owhs.js.map → Index.vue_vue_type_script_setup_true_lang-IGgTDykL.js.map} +1 -1
  190. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BKr3_J68.js → Index.vue_vue_type_script_setup_true_lang-Lwl-M8kR.js} +1 -1
  191. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BKr3_J68.js.map → Index.vue_vue_type_script_setup_true_lang-Lwl-M8kR.js.map} +1 -1
  192. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Dxb_K2w0.js → Index.vue_vue_type_script_setup_true_lang-gsnpWNek.js} +1 -1
  193. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Dxb_K2w0.js.map → Index.vue_vue_type_script_setup_true_lang-gsnpWNek.js.map} +1 -1
  194. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-EGKo8cIw.js → Index.vue_vue_type_script_setup_true_lang-huUkL0wY.js} +1 -1
  195. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-EGKo8cIw.js.map → Index.vue_vue_type_script_setup_true_lang-huUkL0wY.js.map} +1 -1
  196. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BFSRH9yz.js → Index.vue_vue_type_script_setup_true_lang-in1ZSapu.js} +1 -1
  197. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BFSRH9yz.js.map → Index.vue_vue_type_script_setup_true_lang-in1ZSapu.js.map} +1 -1
  198. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-C8HQVerr.js → Index.vue_vue_type_script_setup_true_lang-r6RBdV4y.js} +2 -2
  199. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-C8HQVerr.js.map → Index.vue_vue_type_script_setup_true_lang-r6RBdV4y.js.map} +1 -1
  200. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-DvzXfKhj.js → Index.vue_vue_type_script_setup_true_lang-tTHdssVu.js} +1 -1
  201. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-DvzXfKhj.js.map → Index.vue_vue_type_script_setup_true_lang-tTHdssVu.js.map} +1 -1
  202. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BxxIDGfR.js → Index.vue_vue_type_script_setup_true_lang-tjRv0vNR.js} +1 -1
  203. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-BxxIDGfR.js.map → Index.vue_vue_type_script_setup_true_lang-tjRv0vNR.js.map} +1 -1
  204. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Bk2WD0GS.js → Index.vue_vue_type_script_setup_true_lang-yahz6Ej5.js} +1 -1
  205. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-Bk2WD0GS.js.map → Index.vue_vue_type_script_setup_true_lang-yahz6Ej5.js.map} +1 -1
  206. package/buildLibs/utils/Shared/Index24.css +1 -1
  207. package/buildLibs/utils/Shared/Index25.css +1 -1
  208. package/buildLibs/utils/Shared/Index26.css +1 -1
  209. package/buildLibs/utils/Shared/Index27.css +1 -1
  210. package/buildLibs/utils/Shared/Index28.css +1 -1
  211. package/buildLibs/utils/Shared/Index29.css +1 -1
  212. package/buildLibs/utils/Shared/Index30.css +1 -1
  213. package/buildLibs/utils/Shared/Index31.css +1 -1
  214. package/buildLibs/utils/Shared/Index32.css +1 -1
  215. package/buildLibs/utils/Shared/Index33.css +1 -1
  216. package/buildLibs/utils/Shared/Index34.css +1 -1
  217. package/buildLibs/utils/Shared/Index35.css +1 -1
  218. package/buildLibs/utils/Shared/Index36.css +1 -1
  219. package/buildLibs/utils/Shared/Index37.css +1 -0
  220. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-CR1t8XZl.js +2 -0
  221. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-CR1t8XZl.js.map +1 -0
  222. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-oBeFlRzi.js +148 -0
  223. package/buildLibs/utils/Shared/One.vue_vue_type_script_setup_true_lang-oBeFlRzi.js.map +1 -0
  224. package/buildLibs/utils/Shared/Validate.vue_vue_type_script_setup_true_lang-Bquk40ES.js +406 -0
  225. package/buildLibs/utils/Shared/Validate.vue_vue_type_script_setup_true_lang-Bquk40ES.js.map +1 -0
  226. package/buildLibs/utils/Shared/Validate.vue_vue_type_script_setup_true_lang-CAmKX5pn.js +2 -0
  227. package/buildLibs/utils/Shared/Validate.vue_vue_type_script_setup_true_lang-CAmKX5pn.js.map +1 -0
  228. package/buildLibs/utils/Shared/{Index.vue_vue_type_script_setup_true_lang-C9mOHVoE.js → use-CKNkvmW4.js} +78 -141
  229. package/buildLibs/utils/Shared/use-CKNkvmW4.js.map +1 -0
  230. package/buildLibs/utils/Shared/use-D0Yu2Dbn.js +2 -0
  231. package/buildLibs/utils/Shared/use-D0Yu2Dbn.js.map +1 -0
  232. package/buildLibs/utils/Web/ClAnchorNav.d.ts +3 -0
  233. package/buildLibs/utils/Web/ClCalendar.d.ts +3 -0
  234. package/buildLibs/utils/Web/ClCodeLegend.d.ts +3 -0
  235. package/buildLibs/utils/Web/ClColorpicker.d.ts +3 -0
  236. package/buildLibs/utils/Web/ClCropperPreview.cjs +1 -1
  237. package/buildLibs/utils/Web/ClCropperPreview.d.ts +3 -0
  238. package/buildLibs/utils/Web/ClCropperPreview.js +2 -2
  239. package/buildLibs/utils/Web/ClDatetime.cjs +1 -1
  240. package/buildLibs/utils/Web/ClDatetime.d.ts +3 -0
  241. package/buildLibs/utils/Web/ClDatetime.js +1 -1
  242. package/buildLibs/utils/Web/ClDropdownMenu.d.ts +3 -0
  243. package/buildLibs/utils/Web/ClDropdownMenuItem.cjs +2 -0
  244. package/buildLibs/utils/Web/ClDropdownMenuItem.cjs.map +1 -0
  245. package/buildLibs/utils/Web/ClDropdownMenuItem.css +1 -0
  246. package/buildLibs/utils/Web/ClDropdownMenuItem.d.ts +3 -0
  247. package/buildLibs/utils/Web/ClDropdownMenuItem.js +72 -0
  248. package/buildLibs/utils/Web/ClDropdownMenuItem.js.map +1 -0
  249. package/buildLibs/utils/Web/ClDropdownPopup.d.ts +3 -0
  250. package/buildLibs/utils/Web/ClEcharts.cjs +1 -1
  251. package/buildLibs/utils/Web/ClEcharts.d.ts +3 -0
  252. package/buildLibs/utils/Web/ClEcharts.js +1 -1
  253. package/buildLibs/utils/Web/ClEchartsLineAxisTag.cjs +1 -1
  254. package/buildLibs/utils/Web/ClEchartsLineAxisTag.d.ts +3 -0
  255. package/buildLibs/utils/Web/ClEchartsLineAxisTag.js +1 -1
  256. package/buildLibs/utils/Web/ClFileUpload.cjs +1 -1
  257. package/buildLibs/utils/Web/ClFileUpload.d.ts +3 -0
  258. package/buildLibs/utils/Web/ClFileUpload.js +1 -1
  259. package/buildLibs/utils/Web/ClFramePhone.d.ts +3 -0
  260. package/buildLibs/utils/Web/ClInputTag.cjs +1 -1
  261. package/buildLibs/utils/Web/ClInputTag.d.ts +3 -0
  262. package/buildLibs/utils/Web/ClInputTag.js +1 -1
  263. package/buildLibs/utils/Web/ClPaginate.cjs +1 -1
  264. package/buildLibs/utils/Web/ClPaginate.d.ts +3 -0
  265. package/buildLibs/utils/Web/ClPaginate.js +1 -1
  266. package/buildLibs/utils/Web/ClPortlet.d.ts +3 -0
  267. package/buildLibs/utils/Web/ClPreviewExample.cjs +1 -1
  268. package/buildLibs/utils/Web/ClPreviewExample.d.ts +3 -0
  269. package/buildLibs/utils/Web/ClPreviewExample.js +1 -1
  270. package/buildLibs/utils/Web/ClScrollXFence.cjs +1 -1
  271. package/buildLibs/utils/Web/ClScrollXFence.d.ts +3 -0
  272. package/buildLibs/utils/Web/ClScrollXFence.js +1 -1
  273. package/buildLibs/utils/Web/ClSelect.cjs +1 -1
  274. package/buildLibs/utils/Web/ClSelect.d.ts +3 -0
  275. package/buildLibs/utils/Web/ClSelect.js +1 -1
  276. package/buildLibs/utils/Web/ClSelectCascade.cjs +1 -1
  277. package/buildLibs/utils/Web/ClSelectCascade.d.ts +3 -0
  278. package/buildLibs/utils/Web/ClSelectCascade.js +1 -1
  279. package/buildLibs/utils/Web/ClSelectTag.cjs +1 -1
  280. package/buildLibs/utils/Web/ClSelectTag.d.ts +3 -0
  281. package/buildLibs/utils/Web/ClSelectTag.js +1 -1
  282. package/buildLibs/utils/Web/ClSelectTree.cjs +1 -1
  283. package/buildLibs/utils/Web/ClSelectTree.d.ts +3 -0
  284. package/buildLibs/utils/Web/ClSelectTree.js +1 -1
  285. package/buildLibs/utils/Web/ClSelectmove.d.ts +3 -0
  286. package/buildLibs/utils/Web/ClSidemenu.d.ts +3 -0
  287. package/buildLibs/utils/Web/ClTable.cjs +1 -1
  288. package/buildLibs/utils/Web/ClTable.cjs.map +1 -1
  289. package/buildLibs/utils/Web/ClTable.d.ts +3 -0
  290. package/buildLibs/utils/Web/ClTable.js +1081 -1218
  291. package/buildLibs/utils/Web/ClTable.js.map +1 -1
  292. package/buildLibs/utils/Web/ClTableEdit.d.ts +3 -0
  293. package/buildLibs/utils/Web/ClTableSimple.d.ts +3 -0
  294. package/buildLibs/utils/Web/ClTabs.cjs +1 -1
  295. package/buildLibs/utils/Web/ClTabs.d.ts +3 -0
  296. package/buildLibs/utils/Web/ClTabs.js +1 -1
  297. package/buildLibs/utils/Web/ClTree.cjs +1 -1
  298. package/buildLibs/utils/Web/ClTree.d.ts +3 -0
  299. package/buildLibs/utils/Web/ClTree.js +1 -1
  300. package/buildLibs/utils/Web/ClWeekhour.d.ts +3 -0
  301. package/buildLibs/utils/Web/ClXeditable.cjs +1 -1
  302. package/buildLibs/utils/Web/ClXeditable.cjs.map +1 -1
  303. package/buildLibs/utils/Web/ClXeditable.d.ts +3 -0
  304. package/buildLibs/utils/Web/ClXeditable.js +33 -32
  305. package/buildLibs/utils/Web/ClXeditable.js.map +1 -1
  306. package/buildLibs/web/index.cjs +2 -5
  307. package/buildLibs/web/index.css +1 -0
  308. package/buildLibs/web/index.js +76 -6
  309. package/docs/components/Element/Input.md +1 -1
  310. package/docs/components/Element/InputNumber.md +1 -1
  311. package/package.json +21 -8
  312. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B-yxIx8F.js +0 -663
  313. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-B-yxIx8F.js.map +0 -1
  314. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-C9mOHVoE.js.map +0 -1
  315. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CcOk4kyd.js +0 -2
  316. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-CcOk4kyd.js.map +0 -1
  317. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DtZgYjSl.js +0 -2
  318. package/buildLibs/utils/Shared/Index.vue_vue_type_script_setup_true_lang-DtZgYjSl.js.map +0 -1
  319. package/buildLibs/utils/Shared/Video-BV0YLYT2.js +0 -114
  320. package/buildLibs/utils/Shared/Video-BV0YLYT2.js.map +0 -1
  321. package/buildLibs/utils/Shared/Video-c3jHJSxl.js +0 -2
  322. package/buildLibs/utils/Shared/Video-c3jHJSxl.js.map +0 -1
  323. package/buildLibs/utils/Shared/Video.css +0 -1
  324. package/buildLibs/utils/Web/ClDropdownMenuM.css +0 -1
  325. package/buildLibs/utils/Web/ClPreview.cjs +0 -2
  326. package/buildLibs/utils/Web/ClPreview.cjs.map +0 -1
  327. package/buildLibs/utils/Web/ClPreview.css +0 -1
  328. package/buildLibs/utils/Web/ClPreview.js +0 -353
  329. package/buildLibs/utils/Web/ClPreview.js.map +0 -1
@@ -452,4 +452,4 @@ const ce = ["aria-readonly"], de = ["aria-selected"], me = { key: 0 }, pe = ["in
452
452
  export {
453
453
  Ae as _
454
454
  };
455
- //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-EGKo8cIw.js.map
455
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-huUkL0wY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-EGKo8cIw.js","sources":["../../../src/libs/Mobile/Picker/Column.vue","../../../src/libs/Mobile/Picker/Index.vue"],"sourcesContent":["<template>\n <div\n class=\"picker-column\"\n :class=\"className\"\n :style=\"styColumn\"\n role=\"listbox\"\n :aria-readonly=\"isReadonly || undefined\"\n @touchstart=\"onTouchStart\"\n @touchmove=\"onTouchMove\"\n @touchend=\"onTouchEnd\"\n @touchcancel=\"onTouchEnd\"\n @mousedown=\"onTouchStart\"\n >\n <div\n class=\"picker-column-list\"\n :style=\"styList\"\n >\n <div\n v-for=\"(optionItem, inx) in optionsList\"\n :key=\"`${_keyIndex}-${inx}`\"\n class=\"picker-column-item\"\n :class=\"optItemCls(inx)\"\n :style=\"optItemSty(inx)\"\n role=\"option\"\n :aria-selected=\"optItemCls(inx)['picker-column-item--active'] || undefined\"\n >\n <span v-if=\"!isAllowHtml\">{{ optionItem.text }}</span>\n <span\n v-else\n v-html=\"optionItem.text\"\n ></span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, onBeforeUnmount, type PropType } from 'vue';\nimport CommonBase from '../../Common/base';\nimport type { PickerOption } from './PickerOption';\n\ndefineOptions({ name: 'ClPickerColumn' });\n\n// 惯性滑动触发条件(对齐 Vant):最后一次位移窗口 < MOMENTUM_TIME 且距离 > MOMENTUM_DISTANCE 才触发惯性\nconst MOMENTUM_TIME = 300;\nconst MOMENTUM_DISTANCE = 15;\nconst MOMENTUM_FRICTION = 0.003;\n\n// props\nconst props = defineProps({\n className: String, // desc: 该列自定义CSS类名\n optionsList: {\n type: Array as PropType<PickerOption[]>,\n default: () => [],\n },\n valueIndex: {\n type: Number,\n default: 0, // desc: 当前选中项索引\n },\n optionHeight: {\n type: Number,\n default: 44, // desc: 选项高度(px)\n },\n visibleOptionNum: {\n type: Number,\n default: 6, // desc: 可见选项个数\n },\n swipeDuration: {\n type: Number,\n default: 1000, // desc: 惯性滚动动画时长(ms)\n },\n isAllowHtml: Boolean, // desc: 是否允许选项内容渲染 HTML\n isReadonly: Boolean, // desc: 是否只读(禁止滑动切换)\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'onSelect', index: number): void; // desc: 滑动吸附完成后选中索引变化\n}>();\n\nconst _keyIndex = `pickerColumn-${CommonBase.getRandom(5)}`;\n\n// state\n// 初始定位偏移:让 valueIndex 项位于容器垂直中心\nconst _currentOffset = ref(\n (Math.max(1, props.visibleOptionNum) * props.optionHeight - props.optionHeight) / 2 -\n (CommonBase.isFinite(props.valueIndex) && props.valueIndex >= 0 ? props.valueIndex : 0) *\n props.optionHeight,\n);\nconst _dragOffset = ref(0);\nconst _isDragging = ref(false);\nconst _transitionDuration = ref(0);\nconst _startY = ref(0);\nlet _rafId: number | null = null;\nlet _pendingOffset = 0;\nlet _momentumStartTime = 0;\nlet _momentumStartDelta = 0;\n\n// computed\nconst optVisibleHeight = computed(() => Math.max(1, props.visibleOptionNum) * props.optionHeight);\n// 选中项中心在容器内的偏移(从容器顶部算)\nconst optCenter = computed(() => (optVisibleHeight.value - props.optionHeight) / 2);\nconst optTotalOffset = computed(() => _currentOffset.value + _dragOffset.value);\n// 当前视觉上\"选中行\"的浮点索引(拖拽中为小数)\nconst optVisualIndex = computed(\n () => (optCenter.value - optTotalOffset.value) / props.optionHeight,\n);\n\nconst styColumn = computed(() => ({ height: `${optVisibleHeight.value}px` }));\n\nconst styList = computed(() => ({\n transform: `translateY(${optTotalOffset.value}px)`,\n transition:\n _transitionDuration.value > 0\n ? `transform ${_transitionDuration.value}ms cubic-bezier(0.23, 1, 0.32, 1)`\n : 'none',\n}));\n\nconst optItemCls = (inx: number) => ({\n 'picker-column-item--active': Math.round(optVisualIndex.value) === inx,\n 'picker-column-item--disabled': !!props.optionsList[inx]?.disabled,\n});\n\nconst optItemSty = (inx: number) => {\n const dist = Math.abs(inx - optVisualIndex.value);\n return {\n height: `${props.optionHeight}px`,\n lineHeight: `${props.optionHeight}px`,\n opacity: Math.max(1 - dist * 0.4, 0),\n transform: `rotateX(${-dist * 12}deg) scale(${Math.max(1 - dist * 0.15, 0.5)})`,\n };\n};\n\n// 内部方法\nconst _getClientY = (e: TouchEvent | MouseEvent): number => {\n if ('touches' in e) {\n const touches = (e as TouchEvent).touches;\n return touches.length > 0 ? touches[0].clientY : 0;\n }\n return (e as MouseEvent).clientY;\n};\n\n// 由偏移量反推吸附索引\nconst _getIndexByOffset = (offset: number) =>\n Math.round((optCenter.value - offset) / props.optionHeight);\n\n// 吸附到目标偏移(含惯性目标),跳过后禁用的选项\nconst _snapTo = (targetOffset: number) => {\n const len = props.optionsList.length;\n if (len === 0) {\n _currentOffset.value = optCenter.value;\n _dragOffset.value = 0;\n return;\n }\n const currentIndex = _getIndexByOffset(optTotalOffset.value);\n let inx = _getIndexByOffset(targetOffset);\n inx = Math.min(Math.max(inx, 0), len - 1);\n // disabled 项不可停靠:向最近的可选项吸附\n if (props.optionsList[inx]?.disabled) {\n let found = -1;\n for (let step = 1; step < len; step++) {\n if (inx - step >= 0 && !props.optionsList[inx - step]?.disabled) {\n found = inx - step;\n break;\n }\n if (inx + step < len && !props.optionsList[inx + step]?.disabled) {\n found = inx + step;\n break;\n }\n }\n if (found >= 0) inx = found;\n // 全部禁用:不改变当前索引、不触发选中\n else inx = currentIndex;\n }\n _currentOffset.value = optCenter.value - inx * props.optionHeight;\n // 动画时长按索引位移量钳制:小位移快速吸附,大位移随惯性渐停\n const indexDiff = Math.abs(inx - currentIndex);\n _transitionDuration.value = Math.min(props.swipeDuration, Math.max(200, indexDiff * 150));\n _dragOffset.value = 0;\n if (inx !== props.valueIndex) {\n emit('onSelect', inx);\n }\n};\n\n// 鼠标拖拽的 document 监听适配\nconst _onDocMove = ((e: Event) => onTouchMove(e as MouseEvent)) as EventListener;\nconst _onDocUp = ((e: Event) => onTouchEnd(e as MouseEvent)) as EventListener;\n\nconst _startMouseListeners = () => {\n document.addEventListener('mousemove', _onDocMove);\n document.addEventListener('mouseup', _onDocUp);\n};\n\nconst _stopMouseListeners = () => {\n document.removeEventListener('mousemove', _onDocMove);\n document.removeEventListener('mouseup', _onDocUp);\n};\n\n// 生命周期\nonBeforeUnmount(() => {\n _stopMouseListeners();\n if (_rafId !== null) cancelAnimationFrame(_rafId);\n});\n\n// watch\n// 父级索引变化(外部 setValue / 联动重置)时定位\nwatch(\n () => props.valueIndex,\n val => {\n if (_isDragging.value || !CommonBase.isFinite(val) || val < 0) return;\n _currentOffset.value = optCenter.value - val * props.optionHeight;\n _transitionDuration.value = 200;\n },\n);\n\n// 列数据重建(级联联动)时直接定位,不做动画;有拖拽进行时不打断\nwatch(\n () => props.optionsList,\n () => {\n if (_isDragging.value) return;\n const len = props.optionsList.length;\n let idx = CommonBase.isFinite(props.valueIndex) && props.valueIndex >= 0 ? props.valueIndex : 0;\n if (len > 0) idx = Math.min(idx, len - 1);\n _currentOffset.value = optCenter.value - idx * props.optionHeight;\n _transitionDuration.value = 0;\n },\n);\n\n// 事件方法\nconst onTouchStart = (e: TouchEvent | MouseEvent) => {\n if (props.isReadonly) return;\n if (!('touches' in e) && (e as MouseEvent).button !== 0) return;\n // 上次会话未正常收尾(窗口外松手等)时先清理,避免监听残留\n if (_isDragging.value) {\n _stopMouseListeners();\n }\n _startY.value = _getClientY(e);\n _momentumStartTime = Date.now();\n _momentumStartDelta = 0;\n _isDragging.value = true;\n _transitionDuration.value = 0;\n if (!('touches' in e)) {\n _startMouseListeners();\n }\n};\n\nconst onTouchMove = (e: TouchEvent | MouseEvent) => {\n if (!_isDragging.value) return;\n // 鼠标已无按键按下(窗口外松手)时自愈收尾\n if (!('touches' in e) && (e as MouseEvent).buttons === 0) {\n onTouchEnd();\n return;\n }\n e.preventDefault();\n const y = _getClientY(e);\n const delta = y - _startY.value;\n // 每超过 MOMENTUM_TIME 重置惯性采样窗口,仅保留最近一段位移用于甩动判定\n const now = Date.now();\n if (now - _momentumStartTime > MOMENTUM_TIME) {\n _momentumStartTime = now;\n _momentumStartDelta = delta;\n }\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null;\n // 应用最新位移(非发起时的闭包值),避免高频 movemove 下最后一段位移丢失\n _dragOffset.value = _pendingOffset;\n });\n }\n // 始终记录最新位移,RAF 执行时读取\n _pendingOffset = delta;\n};\n\nconst onTouchEnd = (e?: TouchEvent | MouseEvent) => {\n if (!_isDragging.value) return;\n _isDragging.value = false;\n _stopMouseListeners();\n // 手势取消(来电/系统接管)不触发吸附,仅复位\n if (e?.type === 'touchcancel') {\n _dragOffset.value = 0;\n return;\n }\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n // RAF 尚未执行时按最新位移补算\n _dragOffset.value = _pendingOffset;\n }\n // 甩动判定:仅最近一段位移窗口足够快(<300ms 且 >15px)才触发惯性,\n // 慢拖/正常拖直接就近吸附,避免松手后往拖动方向多跳一格\n const distance = _pendingOffset - _momentumStartDelta;\n const duration = Date.now() - _momentumStartTime;\n const isFlick = duration > 0 && duration < MOMENTUM_TIME && Math.abs(distance) > MOMENTUM_DISTANCE;\n const momentum = isFlick\n ? (Math.abs(distance) / duration / MOMENTUM_FRICTION) * (distance < 0 ? -1 : 1)\n : 0;\n _snapTo(optTotalOffset.value + momentum);\n};\n</script>\n","<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div\n v-if=\"isShowToolbar && toolbarPosition === 'top'\"\n class=\"picker-toolbar\"\n >\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--cancel\"\n @click=\"onCancel\"\n >\n {{ cancelButtonText }}\n </button>\n <div class=\"picker-toolbar-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--confirm\"\n @click=\"onConfirm\"\n >\n {{ confirmButtonText }}\n </button>\n </div>\n <template v-else></template>\n\n <slot name=\"columnsTop\"></slot>\n\n <div\n class=\"picker-columns\"\n :style=\"styColumns\"\n >\n <div\n class=\"picker-frame\"\n :style=\"styFrame\"\n ></div>\n <cl-picker-column\n v-for=\"(colItem, inx) in optColumns\"\n :key=\"`${_keyIndex}-col-${inx}`\"\n :className=\"colItem.className\"\n :optionsList=\"colItem.options\"\n :valueIndex=\"optIndexes[inx] || 0\"\n :optionHeight=\"optOptionHeight\"\n :visibleOptionNum=\"optVisibleOptionNum\"\n :swipeDuration=\"optSwipeDuration\"\n :isAllowHtml=\"isAllowHtml\"\n :isReadonly=\"isReadonly\"\n @onSelect=\"onSelect(inx, $event)\"\n ></cl-picker-column>\n <div\n v-if=\"isLoading\"\n class=\"picker-loading-mask\"\n >\n <cl-load size=\"26\"></cl-load>\n </div>\n <template v-else></template>\n </div>\n\n <slot name=\"columnsBottom\"></slot>\n\n <div\n v-if=\"isShowToolbar && toolbarPosition === 'bottom'\"\n class=\"picker-toolbar picker-toolbar--bottom\"\n >\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--cancel\"\n @click=\"onCancel\"\n >\n {{ cancelButtonText }}\n </button>\n <div class=\"picker-toolbar-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--confirm\"\n @click=\"onConfirm\"\n >\n {{ confirmButtonText }}\n </button>\n </div>\n <template v-else></template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css';\nimport { computed, ref, watch, type PropType } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport ClPickerColumn from './Column.vue';\nimport type {\n PickerChangePayload,\n PickerColumnConfig,\n PickerColumnItem,\n PickerColumns,\n PickerFieldNames,\n PickerOption,\n PickerSelectPayload,\n} from './PickerOption';\n\ndefineOptions({ name: 'ClPicker' });\n\n// props\nconst props = defineProps({\n id: String, // desc: 组件实例唯一标识,用于多实例场景下 DOM 查询限定\n value: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n }, // desc: 选中值数组(每列一个值),支持 v-model:value\n className: String, // desc: 自定义CSS类名\n columnsList: {\n type: Array as PropType<PickerColumns>,\n default: () => [],\n }, // desc: 列配置:显式多列 [{ values, defaultIndex }] 或树形级联(选项 children)\n columnsFieldNames: {\n type: Object as PropType<PickerFieldNames>,\n default: () => ({}),\n }, // desc: 选项字段映射 | enum: { text, value, children }\n title: String, // desc: 顶部栏标题\n confirmButtonText: {\n type: String,\n default: '确认', // desc: 确认按钮文字\n },\n cancelButtonText: {\n type: String,\n default: '取消', // desc: 取消按钮文字\n },\n toolbarPosition: {\n type: String,\n default: 'top', // desc: 顶部栏位置 | enum: top, bottom\n validator: (value: string) => {\n return ['top', 'bottom'].indexOf(value) !== -1;\n },\n },\n isShowToolbar: {\n type: Boolean,\n default: true, // desc: 是否显示顶部栏(确认/取消按钮)\n },\n isLoading: Boolean, // desc: 是否显示加载状态\n isReadonly: Boolean, // desc: 是否只读(禁止滑动切换选项)\n isAllowHtml: Boolean, // desc: 是否允许选项内容渲染 HTML(默认关闭,防注入)\n optionHeight: {\n type: Number,\n default: 44, // desc: 选项高度(px)\n },\n visibleOptionNum: {\n type: Number,\n default: 6, // desc: 可见选项个数(建议奇数,居中效果更好)\n },\n swipeDuration: {\n type: Number,\n default: 1000, // desc: 快速滑动时惯性滚动的动画时长(ms)\n },\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: (string | number)[]): void; // desc: 选中值数组变化(每列一个值)\n (e: 'onConfirm', payload: PickerSelectPayload): void; // desc: 点击确认按钮时触发\n (e: 'onCancel', payload: PickerSelectPayload): void; // desc: 点击取消按钮时触发\n (e: 'onChange', payload: PickerChangePayload): void; // desc: 选项改变时触发(columnIndex 标识变化列)\n}>();\n\n// slots: title(顶部栏标题), columnsTop(选项上方), columnsBottom(选项下方)\n\nconst _keyIndex = `picker-${CommonBase.getRandom(5)}`;\nconst elId = props.id; // || `picker-${CommonBase.getRandom(8)}`\n\n// 解析后的列配置\ninterface PickerResolvedColumn {\n options: PickerOption[];\n defaultIndex: number;\n className?: string;\n}\nconst optColumns = ref<PickerResolvedColumn[]>([]);\nconst optIndexes = ref<number[]>([]);\n\n// computed\nconst optFieldNames = computed(() => ({\n text: props.columnsFieldNames?.text || 'text',\n value: props.columnsFieldNames?.value || 'value',\n children: props.columnsFieldNames?.children || 'children',\n}));\n\nconst optOptionHeight = computed(() =>\n CommonBase.isFinite(props.optionHeight) && props.optionHeight > 0 ? props.optionHeight : 44,\n);\n\nconst optVisibleOptionNum = computed(() =>\n CommonBase.isFinite(props.visibleOptionNum) ? Math.max(1, props.visibleOptionNum) : 6,\n);\n\nconst optSwipeDuration = computed(() =>\n CommonBase.isFinite(props.swipeDuration) ? Math.max(0, props.swipeDuration) : 1000,\n);\n\nconst styColumns = computed(() => ({\n height: `${optVisibleOptionNum.value * optOptionHeight.value}px`,\n}));\n\nconst styFrame = computed(() => ({\n height: `${optOptionHeight.value}px`,\n}));\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = {\n 'panel-picker': true,\n 'picker-readonly': props.isReadonly,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\n// 内部方法\n// 解析原始数据项 → 内部选项对象\nconst _parseOption = (item: PickerColumnItem): PickerOption | null => {\n if (CommonBase.isString(item) || CommonBase.isNumber(item)) {\n // CommonBase.isString/isNumber 非 TS 类型守卫,需手动断言收窄\n return { text: String(item), value: item as string | number };\n }\n if (CommonBase.getTypeof(item) === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n const rawText = obj[optFieldNames.value.text];\n const rawValue = obj[optFieldNames.value.value];\n const rawChildren = obj[optFieldNames.value.children];\n const text = CommonBase.isString(rawText)\n ? (rawText as string)\n : CommonBase.isNumber(rawText)\n ? String(rawText)\n : '';\n const value =\n CommonBase.isString(rawValue) || CommonBase.isNumber(rawValue)\n ? (rawValue as string | number)\n : '';\n const children = Array.isArray(rawChildren) ? rawChildren : undefined;\n return {\n text,\n value,\n disabled: !!obj.disabled,\n children: children\n ? children.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : undefined,\n };\n }\n return null;\n};\n\n// 判断是否为显式多列模式(第一项带 values 字段)\nconst _isExplicitColumns = (): boolean => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) return false;\n const first = c[0];\n return (\n CommonBase.getTypeof(first) === 'object' &&\n first !== null &&\n Array.isArray((first as Record<string, unknown>).values)\n );\n};\n\n// 根据当前索引展开列(树形级联:选中项 children 作为下一列数据)\nconst _resolveColumns = (): PickerResolvedColumn[] => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) return [];\n if (_isExplicitColumns()) {\n return (c as PickerColumnConfig[]).map(col => {\n const options = Array.isArray(col.values)\n ? col.values.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : [];\n const di = CommonBase.isFinite(col.defaultIndex) ? (col.defaultIndex as number) : 0;\n return {\n options,\n defaultIndex: options.length > 0 ? Math.min(Math.max(0, Math.floor(di)), options.length - 1) : 0,\n className: CommonBase.isString(col.className) ? col.className : undefined,\n };\n });\n }\n // 树形级联:逐级展开(选中项 children 作为下一列数据)\n const resolved: PickerResolvedColumn[] = [];\n let options = (c as PickerColumnItem[])\n .map(_parseOption)\n .filter((opt): opt is PickerOption => opt !== null);\n let guard = 0;\n while (options.length > 0 && guard < 20) {\n guard++;\n resolved.push({ options, defaultIndex: 0 });\n const selected = options[optIndexes.value[resolved.length - 1] || 0];\n const children = selected?.children;\n if (children && children.length > 0) {\n options = children;\n } else {\n break;\n }\n }\n return resolved;\n};\n\nconst _getSelectedValues = (): (string | number)[] =>\n optIndexes.value\n .map((i, col) => optColumns.value[col]?.options[i]?.value)\n .filter((v): v is string | number => v !== undefined);\n\nconst _getSelectedOptions = (): PickerOption[] =>\n optIndexes.value\n .map((i, col) => optColumns.value[col]?.options[i])\n .filter((opt): opt is PickerOption => !!opt);\n\nconst _getSelectedIndexes = (): number[] => [...optIndexes.value];\n\nconst _valuesEqual = (a: (string | number)[], b: (string | number)[]): boolean =>\n a.length === b.length && a.every((v, i) => v === b[i]);\n\nconst _syncValue = () => {\n const values = _getSelectedValues();\n const old = Array.isArray(props.value) ? props.value : [];\n if (!_valuesEqual(values, old)) {\n emit('update:value', values);\n }\n};\n\n// 应用选中值(外部回显 / setValue),逐列反查索引\nconst _applyValue = (val?: (string | number)[]) => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) {\n optColumns.value = [];\n optIndexes.value = [];\n return;\n }\n const newIndexes: number[] = [];\n if (_isExplicitColumns()) {\n (c as PickerColumnConfig[]).forEach((col, i) => {\n const options = Array.isArray(col.values)\n ? col.values.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : [];\n const target = val?.[i];\n let idx = options.findIndex(opt => opt.value === target);\n if (idx < 0) {\n const di = CommonBase.isFinite(col.defaultIndex) ? (col.defaultIndex as number) : 0;\n idx = options.length > 0 ? Math.min(Math.max(0, Math.floor(di)), options.length - 1) : 0;\n }\n newIndexes.push(idx);\n });\n } else {\n // 树形级联:逐级展开并反查\n let options = (c as PickerColumnItem[])\n .map(_parseOption)\n .filter((opt): opt is PickerOption => opt !== null);\n let guard = 0;\n while (options.length > 0 && guard < 20) {\n guard++;\n const target = val?.[newIndexes.length];\n let idx = options.findIndex(opt => opt.value === target);\n if (idx < 0) idx = 0;\n newIndexes.push(idx);\n const children = options[idx]?.children;\n if (children && children.length > 0) {\n options = children;\n } else {\n break;\n }\n }\n }\n optIndexes.value = newIndexes;\n optColumns.value = _resolveColumns();\n};\n\n// watch\nwatch(\n () => props.columnsList,\n () => {\n _applyValue(Array.isArray(props.value) ? props.value : undefined);\n },\n { deep: true, immediate: true },\n);\n\n// 外部 value 变化(回显 / v-model 赋值)且与内部不一致时重新定位\nwatch(\n () => props.value,\n val => {\n if (!Array.isArray(val)) return;\n const values = _getSelectedValues();\n if (!_valuesEqual(values, val)) {\n _applyValue(val);\n }\n },\n { deep: true },\n);\n\n// 事件方法\nconst onSelect = (columnIndex: number, optionIndex: number) => {\n if (optIndexes.value[columnIndex] === optionIndex) return;\n optIndexes.value[columnIndex] = optionIndex;\n // 先截断该列之后的索引,避免 _resolveColumns 读到陈旧深层索引导致级联列数据与高亮错位/截断\n optIndexes.value = optIndexes.value.slice(0, columnIndex + 1);\n // 该列之后的列按新选中项 children 重建,索引重置为新列 defaultIndex\n optColumns.value = _resolveColumns();\n const nextIndexes = optIndexes.value.slice(0, columnIndex + 1);\n for (let i = nextIndexes.length; i < optColumns.value.length; i++) {\n nextIndexes.push(optColumns.value[i].defaultIndex);\n }\n optIndexes.value = nextIndexes;\n emit('onChange', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n columnIndex,\n });\n _syncValue();\n};\n\nconst onConfirm = () => {\n emit('onConfirm', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n });\n};\n\nconst onCancel = () => {\n emit('onCancel', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n });\n};\n\n// 开放给外部使用的方法\nconst getValue = (): (string | number)[] => _getSelectedValues();\nconst setValue = (values: (string | number)[]): void => {\n _applyValue(values);\n // 同步回写 v-model:value,避免内部选中与父 value 长期不一致\n _syncValue();\n};\nconst getValueData = (): PickerOption[] => _getSelectedOptions();\nconst getSelectedOptions = (): PickerOption[] => _getSelectedOptions();\nconst confirm = (): void => onConfirm();\n\n// 导出类型\nexport interface ClPickerExpose {\n getValue: () => (string | number)[];\n setValue: (values: (string | number)[]) => void;\n getValueData: () => PickerOption[];\n getSelectedOptions: () => PickerOption[];\n confirm: () => void;\n}\n\n// defineExpose(必须放在最后)\ndefineExpose({ getValue, setValue, getValueData, getSelectedOptions, confirm });\n</script>\n"],"names":["MOMENTUM_TIME","MOMENTUM_DISTANCE","MOMENTUM_FRICTION","props","__props","emit","__emit","_keyIndex","CommonBase","_currentOffset","ref","_dragOffset","_isDragging","_transitionDuration","_startY","_rafId","_pendingOffset","_momentumStartTime","_momentumStartDelta","optVisibleHeight","computed","optCenter","optTotalOffset","optVisualIndex","styColumn","styList","optItemCls","inx","optItemSty","dist","_getClientY","e","touches","_getIndexByOffset","offset","_snapTo","targetOffset","len","currentIndex","found","step","indexDiff","_onDocMove","onTouchMove","_onDocUp","onTouchEnd","_startMouseListeners","_stopMouseListeners","onBeforeUnmount","watch","val","idx","onTouchStart","delta","now","distance","duration","momentum","_createElementBlock","_normalizeClass","_createElementVNode","_openBlock","_Fragment","_renderList","optionItem","_normalizeStyle","_hoisted_3","_toDisplayString","elId","optColumns","optIndexes","optFieldNames","optOptionHeight","optVisibleOptionNum","optSwipeDuration","styColumns","styFrame","clsParent","cls","CommonElement","_parseOption","item","obj","rawText","rawValue","rawChildren","text","value","children","opt","_isExplicitColumns","c","first","_resolveColumns","col","options","di","resolved","guard","_getSelectedValues","i","v","_getSelectedOptions","_getSelectedIndexes","_valuesEqual","a","b","_syncValue","values","old","_applyValue","newIndexes","target","onSelect","columnIndex","optionIndex","nextIndexes","onConfirm","onCancel","__expose","_unref","_hoisted_2","_renderSlot","_ctx","colItem","_createBlock","ClPickerColumn","$event","_hoisted_4","_createVNode","ClLoad","_hoisted_5","_hoisted_6"],"mappings":"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"}
1
+ {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-huUkL0wY.js","sources":["../../../src/libs/Mobile/Picker/Column.vue","../../../src/libs/Mobile/Picker/Index.vue"],"sourcesContent":["<template>\n <div\n class=\"picker-column\"\n :class=\"className\"\n :style=\"styColumn\"\n role=\"listbox\"\n :aria-readonly=\"isReadonly || undefined\"\n @touchstart=\"onTouchStart\"\n @touchmove=\"onTouchMove\"\n @touchend=\"onTouchEnd\"\n @touchcancel=\"onTouchEnd\"\n @mousedown=\"onTouchStart\"\n >\n <div\n class=\"picker-column-list\"\n :style=\"styList\"\n >\n <div\n v-for=\"(optionItem, inx) in optionsList\"\n :key=\"`${_keyIndex}-${inx}`\"\n class=\"picker-column-item\"\n :class=\"optItemCls(inx)\"\n :style=\"optItemSty(inx)\"\n role=\"option\"\n :aria-selected=\"optItemCls(inx)['picker-column-item--active'] || undefined\"\n >\n <span v-if=\"!isAllowHtml\">{{ optionItem.text }}</span>\n <span\n v-else\n v-html=\"optionItem.text\"\n ></span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, onBeforeUnmount, type PropType } from 'vue';\nimport CommonBase from '../../Common/base';\nimport type { PickerOption } from './PickerOption';\n\ndefineOptions({ name: 'ClPickerColumn' });\n\n// 惯性滑动触发条件(对齐 Vant):最后一次位移窗口 < MOMENTUM_TIME 且距离 > MOMENTUM_DISTANCE 才触发惯性\nconst MOMENTUM_TIME = 300;\nconst MOMENTUM_DISTANCE = 15;\nconst MOMENTUM_FRICTION = 0.003;\n\n// props\nconst props = defineProps({\n className: String, // desc: 该列自定义CSS类名\n optionsList: {\n type: Array as PropType<PickerOption[]>,\n default: () => [],\n },\n valueIndex: {\n type: Number,\n default: 0, // desc: 当前选中项索引\n },\n optionHeight: {\n type: Number,\n default: 44, // desc: 选项高度(px)\n },\n visibleOptionNum: {\n type: Number,\n default: 6, // desc: 可见选项个数\n },\n swipeDuration: {\n type: Number,\n default: 1000, // desc: 惯性滚动动画时长(ms)\n },\n isAllowHtml: Boolean, // desc: 是否允许选项内容渲染 HTML\n isReadonly: Boolean, // desc: 是否只读(禁止滑动切换)\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'onSelect', index: number): void; // desc: 滑动吸附完成后选中索引变化\n}>();\n\nconst _keyIndex = `pickerColumn-${CommonBase.getRandom(5)}`;\n\n// state\n// 初始定位偏移:让 valueIndex 项位于容器垂直中心\nconst _currentOffset = ref(\n (Math.max(1, props.visibleOptionNum) * props.optionHeight - props.optionHeight) / 2 -\n (CommonBase.isFinite(props.valueIndex) && props.valueIndex >= 0 ? props.valueIndex : 0) *\n props.optionHeight,\n);\nconst _dragOffset = ref(0);\nconst _isDragging = ref(false);\nconst _transitionDuration = ref(0);\nconst _startY = ref(0);\nlet _rafId: number | null = null;\nlet _pendingOffset = 0;\nlet _momentumStartTime = 0;\nlet _momentumStartDelta = 0;\n\n// computed\nconst optVisibleHeight = computed(() => Math.max(1, props.visibleOptionNum) * props.optionHeight);\n// 选中项中心在容器内的偏移(从容器顶部算)\nconst optCenter = computed(() => (optVisibleHeight.value - props.optionHeight) / 2);\nconst optTotalOffset = computed(() => _currentOffset.value + _dragOffset.value);\n// 当前视觉上\"选中行\"的浮点索引(拖拽中为小数)\nconst optVisualIndex = computed(\n () => (optCenter.value - optTotalOffset.value) / props.optionHeight,\n);\n\nconst styColumn = computed(() => ({ height: `${optVisibleHeight.value}px` }));\n\nconst styList = computed(() => ({\n transform: `translateY(${optTotalOffset.value}px)`,\n transition:\n _transitionDuration.value > 0\n ? `transform ${_transitionDuration.value}ms cubic-bezier(0.23, 1, 0.32, 1)`\n : 'none',\n}));\n\nconst optItemCls = (inx: number) => ({\n 'picker-column-item--active': Math.round(optVisualIndex.value) === inx,\n 'picker-column-item--disabled': !!props.optionsList[inx]?.disabled,\n});\n\nconst optItemSty = (inx: number) => {\n const dist = Math.abs(inx - optVisualIndex.value);\n return {\n height: `${props.optionHeight}px`,\n lineHeight: `${props.optionHeight}px`,\n opacity: Math.max(1 - dist * 0.4, 0),\n transform: `rotateX(${-dist * 12}deg) scale(${Math.max(1 - dist * 0.15, 0.5)})`,\n };\n};\n\n// 内部方法\nconst _getClientY = (e: TouchEvent | MouseEvent): number => {\n if ('touches' in e) {\n const touches = (e as TouchEvent).touches;\n return touches.length > 0 ? touches[0].clientY : 0;\n }\n return (e as MouseEvent).clientY;\n};\n\n// 由偏移量反推吸附索引\nconst _getIndexByOffset = (offset: number) =>\n Math.round((optCenter.value - offset) / props.optionHeight);\n\n// 吸附到目标偏移(含惯性目标),跳过后禁用的选项\nconst _snapTo = (targetOffset: number) => {\n const len = props.optionsList.length;\n if (len === 0) {\n _currentOffset.value = optCenter.value;\n _dragOffset.value = 0;\n return;\n }\n const currentIndex = _getIndexByOffset(optTotalOffset.value);\n let inx = _getIndexByOffset(targetOffset);\n inx = Math.min(Math.max(inx, 0), len - 1);\n // disabled 项不可停靠:向最近的可选项吸附\n if (props.optionsList[inx]?.disabled) {\n let found = -1;\n for (let step = 1; step < len; step++) {\n if (inx - step >= 0 && !props.optionsList[inx - step]?.disabled) {\n found = inx - step;\n break;\n }\n if (inx + step < len && !props.optionsList[inx + step]?.disabled) {\n found = inx + step;\n break;\n }\n }\n if (found >= 0) inx = found;\n // 全部禁用:不改变当前索引、不触发选中\n else inx = currentIndex;\n }\n _currentOffset.value = optCenter.value - inx * props.optionHeight;\n // 动画时长按索引位移量钳制:小位移快速吸附,大位移随惯性渐停\n const indexDiff = Math.abs(inx - currentIndex);\n _transitionDuration.value = Math.min(props.swipeDuration, Math.max(200, indexDiff * 150));\n _dragOffset.value = 0;\n if (inx !== props.valueIndex) {\n emit('onSelect', inx);\n }\n};\n\n// 鼠标拖拽的 document 监听适配\nconst _onDocMove = ((e: Event) => onTouchMove(e as MouseEvent)) as EventListener;\nconst _onDocUp = ((e: Event) => onTouchEnd(e as MouseEvent)) as EventListener;\n\nconst _startMouseListeners = () => {\n document.addEventListener('mousemove', _onDocMove);\n document.addEventListener('mouseup', _onDocUp);\n};\n\nconst _stopMouseListeners = () => {\n document.removeEventListener('mousemove', _onDocMove);\n document.removeEventListener('mouseup', _onDocUp);\n};\n\n// 生命周期\nonBeforeUnmount(() => {\n _stopMouseListeners();\n if (_rafId !== null) cancelAnimationFrame(_rafId);\n});\n\n// watch\n// 父级索引变化(外部 setValue / 联动重置)时定位\nwatch(\n () => props.valueIndex,\n val => {\n if (_isDragging.value || !CommonBase.isFinite(val) || val < 0) return;\n _currentOffset.value = optCenter.value - val * props.optionHeight;\n _transitionDuration.value = 200;\n },\n);\n\n// 列数据重建(级联联动)时直接定位,不做动画;有拖拽进行时不打断\nwatch(\n () => props.optionsList,\n () => {\n if (_isDragging.value) return;\n const len = props.optionsList.length;\n let idx = CommonBase.isFinite(props.valueIndex) && props.valueIndex >= 0 ? props.valueIndex : 0;\n if (len > 0) idx = Math.min(idx, len - 1);\n _currentOffset.value = optCenter.value - idx * props.optionHeight;\n _transitionDuration.value = 0;\n },\n);\n\n// 事件方法\nconst onTouchStart = (e: TouchEvent | MouseEvent) => {\n if (props.isReadonly) return;\n if (!('touches' in e) && (e as MouseEvent).button !== 0) return;\n // 上次会话未正常收尾(窗口外松手等)时先清理,避免监听残留\n if (_isDragging.value) {\n _stopMouseListeners();\n }\n _startY.value = _getClientY(e);\n _momentumStartTime = Date.now();\n _momentumStartDelta = 0;\n _isDragging.value = true;\n _transitionDuration.value = 0;\n if (!('touches' in e)) {\n _startMouseListeners();\n }\n};\n\nconst onTouchMove = (e: TouchEvent | MouseEvent) => {\n if (!_isDragging.value) return;\n // 鼠标已无按键按下(窗口外松手)时自愈收尾\n if (!('touches' in e) && (e as MouseEvent).buttons === 0) {\n onTouchEnd();\n return;\n }\n e.preventDefault();\n const y = _getClientY(e);\n const delta = y - _startY.value;\n // 每超过 MOMENTUM_TIME 重置惯性采样窗口,仅保留最近一段位移用于甩动判定\n const now = Date.now();\n if (now - _momentumStartTime > MOMENTUM_TIME) {\n _momentumStartTime = now;\n _momentumStartDelta = delta;\n }\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null;\n // 应用最新位移(非发起时的闭包值),避免高频 movemove 下最后一段位移丢失\n _dragOffset.value = _pendingOffset;\n });\n }\n // 始终记录最新位移,RAF 执行时读取\n _pendingOffset = delta;\n};\n\nconst onTouchEnd = (e?: TouchEvent | MouseEvent) => {\n if (!_isDragging.value) return;\n _isDragging.value = false;\n _stopMouseListeners();\n // 手势取消(来电/系统接管)不触发吸附,仅复位\n if (e?.type === 'touchcancel') {\n _dragOffset.value = 0;\n return;\n }\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n // RAF 尚未执行时按最新位移补算\n _dragOffset.value = _pendingOffset;\n }\n // 甩动判定:仅最近一段位移窗口足够快(<300ms 且 >15px)才触发惯性,\n // 慢拖/正常拖直接就近吸附,避免松手后往拖动方向多跳一格\n const distance = _pendingOffset - _momentumStartDelta;\n const duration = Date.now() - _momentumStartTime;\n const isFlick = duration > 0 && duration < MOMENTUM_TIME && Math.abs(distance) > MOMENTUM_DISTANCE;\n const momentum = isFlick\n ? (Math.abs(distance) / duration / MOMENTUM_FRICTION) * (distance < 0 ? -1 : 1)\n : 0;\n _snapTo(optTotalOffset.value + momentum);\n};\n</script>\n","<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div\n v-if=\"isShowToolbar && toolbarPosition === 'top'\"\n class=\"picker-toolbar\"\n >\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--cancel\"\n @click=\"onCancel\"\n >\n {{ cancelButtonText }}\n </button>\n <div class=\"picker-toolbar-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--confirm\"\n @click=\"onConfirm\"\n >\n {{ confirmButtonText }}\n </button>\n </div>\n <template v-else></template>\n\n <slot name=\"columnsTop\"></slot>\n\n <div\n class=\"picker-columns\"\n :style=\"styColumns\"\n >\n <div\n class=\"picker-frame\"\n :style=\"styFrame\"\n ></div>\n <cl-picker-column\n v-for=\"(colItem, inx) in optColumns\"\n :key=\"`${_keyIndex}-col-${inx}`\"\n :className=\"colItem.className\"\n :optionsList=\"colItem.options\"\n :valueIndex=\"optIndexes[inx] || 0\"\n :optionHeight=\"optOptionHeight\"\n :visibleOptionNum=\"optVisibleOptionNum\"\n :swipeDuration=\"optSwipeDuration\"\n :isAllowHtml=\"isAllowHtml\"\n :isReadonly=\"isReadonly\"\n @onSelect=\"onSelect(inx, $event)\"\n ></cl-picker-column>\n <div\n v-if=\"isLoading\"\n class=\"picker-loading-mask\"\n >\n <cl-load size=\"26\"></cl-load>\n </div>\n <template v-else></template>\n </div>\n\n <slot name=\"columnsBottom\"></slot>\n\n <div\n v-if=\"isShowToolbar && toolbarPosition === 'bottom'\"\n class=\"picker-toolbar picker-toolbar--bottom\"\n >\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--cancel\"\n @click=\"onCancel\"\n >\n {{ cancelButtonText }}\n </button>\n <div class=\"picker-toolbar-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <button\n type=\"button\"\n class=\"picker-toolbar-btn picker-toolbar-btn--confirm\"\n @click=\"onConfirm\"\n >\n {{ confirmButtonText }}\n </button>\n </div>\n <template v-else></template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport './Index.css';\nimport { computed, ref, watch, type PropType } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport ClPickerColumn from './Column.vue';\nimport type {\n PickerChangePayload,\n PickerColumnConfig,\n PickerColumnItem,\n PickerColumns,\n PickerFieldNames,\n PickerOption,\n PickerSelectPayload,\n} from './PickerOption';\n\ndefineOptions({ name: 'ClPicker' });\n\n// props\nconst props = defineProps({\n id: String, // desc: 组件实例唯一标识,用于多实例场景下 DOM 查询限定\n value: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n }, // desc: 选中值数组(每列一个值),支持 v-model:value\n className: String, // desc: 自定义CSS类名\n columnsList: {\n type: Array as PropType<PickerColumns>,\n default: () => [],\n }, // desc: 列配置:显式多列 [{ values, defaultIndex }] 或树形级联(选项 children)\n columnsFieldNames: {\n type: Object as PropType<PickerFieldNames>,\n default: () => ({}),\n }, // desc: 选项字段映射 | enum: { text, value, children }\n title: String, // desc: 顶部栏标题\n confirmButtonText: {\n type: String,\n default: '确认', // desc: 确认按钮文字\n },\n cancelButtonText: {\n type: String,\n default: '取消', // desc: 取消按钮文字\n },\n toolbarPosition: {\n type: String,\n default: 'top', // desc: 顶部栏位置 | enum: top, bottom\n validator: (value: string) => {\n return ['top', 'bottom'].indexOf(value) !== -1;\n },\n },\n isShowToolbar: {\n type: Boolean,\n default: true, // desc: 是否显示顶部栏(确认/取消按钮)\n },\n isLoading: Boolean, // desc: 是否显示加载状态\n isReadonly: Boolean, // desc: 是否只读(禁止滑动切换选项)\n isAllowHtml: Boolean, // desc: 是否允许选项内容渲染 HTML(默认关闭,防注入)\n optionHeight: {\n type: Number,\n default: 44, // desc: 选项高度(px)\n },\n visibleOptionNum: {\n type: Number,\n default: 6, // desc: 可见选项个数(建议奇数,居中效果更好)\n },\n swipeDuration: {\n type: Number,\n default: 1000, // desc: 快速滑动时惯性滚动的动画时长(ms)\n },\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'update:value', value: (string | number)[]): void; // desc: 选中值数组变化(每列一个值)\n (e: 'onConfirm', payload: PickerSelectPayload): void; // desc: 点击确认按钮时触发\n (e: 'onCancel', payload: PickerSelectPayload): void; // desc: 点击取消按钮时触发\n (e: 'onChange', payload: PickerChangePayload): void; // desc: 选项改变时触发(columnIndex 标识变化列)\n}>();\n\n// slots: title(顶部栏标题), columnsTop(选项上方), columnsBottom(选项下方)\n\nconst _keyIndex = `picker-${CommonBase.getRandom(5)}`;\nconst elId = props.id; // || `picker-${CommonBase.getRandom(8)}`\n\n// 解析后的列配置\ninterface PickerResolvedColumn {\n options: PickerOption[];\n defaultIndex: number;\n className?: string;\n}\nconst optColumns = ref<PickerResolvedColumn[]>([]);\nconst optIndexes = ref<number[]>([]);\n\n// computed\nconst optFieldNames = computed(() => ({\n text: props.columnsFieldNames?.text || 'text',\n value: props.columnsFieldNames?.value || 'value',\n children: props.columnsFieldNames?.children || 'children',\n}));\n\nconst optOptionHeight = computed(() =>\n CommonBase.isFinite(props.optionHeight) && props.optionHeight > 0 ? props.optionHeight : 44,\n);\n\nconst optVisibleOptionNum = computed(() =>\n CommonBase.isFinite(props.visibleOptionNum) ? Math.max(1, props.visibleOptionNum) : 6,\n);\n\nconst optSwipeDuration = computed(() =>\n CommonBase.isFinite(props.swipeDuration) ? Math.max(0, props.swipeDuration) : 1000,\n);\n\nconst styColumns = computed(() => ({\n height: `${optVisibleOptionNum.value * optOptionHeight.value}px`,\n}));\n\nconst styFrame = computed(() => ({\n height: `${optOptionHeight.value}px`,\n}));\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = {\n 'panel-picker': true,\n 'picker-readonly': props.isReadonly,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\n// 内部方法\n// 解析原始数据项 → 内部选项对象\nconst _parseOption = (item: PickerColumnItem): PickerOption | null => {\n if (CommonBase.isString(item) || CommonBase.isNumber(item)) {\n // CommonBase.isString/isNumber 非 TS 类型守卫,需手动断言收窄\n return { text: String(item), value: item as string | number };\n }\n if (CommonBase.getTypeof(item) === 'object' && item !== null) {\n const obj = item as Record<string, unknown>;\n const rawText = obj[optFieldNames.value.text];\n const rawValue = obj[optFieldNames.value.value];\n const rawChildren = obj[optFieldNames.value.children];\n const text = CommonBase.isString(rawText)\n ? (rawText as string)\n : CommonBase.isNumber(rawText)\n ? String(rawText)\n : '';\n const value =\n CommonBase.isString(rawValue) || CommonBase.isNumber(rawValue)\n ? (rawValue as string | number)\n : '';\n const children = Array.isArray(rawChildren) ? rawChildren : undefined;\n return {\n text,\n value,\n disabled: !!obj.disabled,\n children: children\n ? children.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : undefined,\n };\n }\n return null;\n};\n\n// 判断是否为显式多列模式(第一项带 values 字段)\nconst _isExplicitColumns = (): boolean => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) return false;\n const first = c[0];\n return (\n CommonBase.getTypeof(first) === 'object' &&\n first !== null &&\n Array.isArray((first as Record<string, unknown>).values)\n );\n};\n\n// 根据当前索引展开列(树形级联:选中项 children 作为下一列数据)\nconst _resolveColumns = (): PickerResolvedColumn[] => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) return [];\n if (_isExplicitColumns()) {\n return (c as PickerColumnConfig[]).map(col => {\n const options = Array.isArray(col.values)\n ? col.values.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : [];\n const di = CommonBase.isFinite(col.defaultIndex) ? (col.defaultIndex as number) : 0;\n return {\n options,\n defaultIndex: options.length > 0 ? Math.min(Math.max(0, Math.floor(di)), options.length - 1) : 0,\n className: CommonBase.isString(col.className) ? col.className : undefined,\n };\n });\n }\n // 树形级联:逐级展开(选中项 children 作为下一列数据)\n const resolved: PickerResolvedColumn[] = [];\n let options = (c as PickerColumnItem[])\n .map(_parseOption)\n .filter((opt): opt is PickerOption => opt !== null);\n let guard = 0;\n while (options.length > 0 && guard < 20) {\n guard++;\n resolved.push({ options, defaultIndex: 0 });\n const selected = options[optIndexes.value[resolved.length - 1] || 0];\n const children = selected?.children;\n if (children && children.length > 0) {\n options = children;\n } else {\n break;\n }\n }\n return resolved;\n};\n\nconst _getSelectedValues = (): (string | number)[] =>\n optIndexes.value\n .map((i, col) => optColumns.value[col]?.options[i]?.value)\n .filter((v): v is string | number => v !== undefined);\n\nconst _getSelectedOptions = (): PickerOption[] =>\n optIndexes.value\n .map((i, col) => optColumns.value[col]?.options[i])\n .filter((opt): opt is PickerOption => !!opt);\n\nconst _getSelectedIndexes = (): number[] => [...optIndexes.value];\n\nconst _valuesEqual = (a: (string | number)[], b: (string | number)[]): boolean =>\n a.length === b.length && a.every((v, i) => v === b[i]);\n\nconst _syncValue = () => {\n const values = _getSelectedValues();\n const old = Array.isArray(props.value) ? props.value : [];\n if (!_valuesEqual(values, old)) {\n emit('update:value', values);\n }\n};\n\n// 应用选中值(外部回显 / setValue),逐列反查索引\nconst _applyValue = (val?: (string | number)[]) => {\n const c = props.columnsList;\n if (!Array.isArray(c) || c.length === 0) {\n optColumns.value = [];\n optIndexes.value = [];\n return;\n }\n const newIndexes: number[] = [];\n if (_isExplicitColumns()) {\n (c as PickerColumnConfig[]).forEach((col, i) => {\n const options = Array.isArray(col.values)\n ? col.values.map(_parseOption).filter((opt): opt is PickerOption => opt !== null)\n : [];\n const target = val?.[i];\n let idx = options.findIndex(opt => opt.value === target);\n if (idx < 0) {\n const di = CommonBase.isFinite(col.defaultIndex) ? (col.defaultIndex as number) : 0;\n idx = options.length > 0 ? Math.min(Math.max(0, Math.floor(di)), options.length - 1) : 0;\n }\n newIndexes.push(idx);\n });\n } else {\n // 树形级联:逐级展开并反查\n let options = (c as PickerColumnItem[])\n .map(_parseOption)\n .filter((opt): opt is PickerOption => opt !== null);\n let guard = 0;\n while (options.length > 0 && guard < 20) {\n guard++;\n const target = val?.[newIndexes.length];\n let idx = options.findIndex(opt => opt.value === target);\n if (idx < 0) idx = 0;\n newIndexes.push(idx);\n const children = options[idx]?.children;\n if (children && children.length > 0) {\n options = children;\n } else {\n break;\n }\n }\n }\n optIndexes.value = newIndexes;\n optColumns.value = _resolveColumns();\n};\n\n// watch\nwatch(\n () => props.columnsList,\n () => {\n _applyValue(Array.isArray(props.value) ? props.value : undefined);\n },\n { deep: true, immediate: true },\n);\n\n// 外部 value 变化(回显 / v-model 赋值)且与内部不一致时重新定位\nwatch(\n () => props.value,\n val => {\n if (!Array.isArray(val)) return;\n const values = _getSelectedValues();\n if (!_valuesEqual(values, val)) {\n _applyValue(val);\n }\n },\n { deep: true },\n);\n\n// 事件方法\nconst onSelect = (columnIndex: number, optionIndex: number) => {\n if (optIndexes.value[columnIndex] === optionIndex) return;\n optIndexes.value[columnIndex] = optionIndex;\n // 先截断该列之后的索引,避免 _resolveColumns 读到陈旧深层索引导致级联列数据与高亮错位/截断\n optIndexes.value = optIndexes.value.slice(0, columnIndex + 1);\n // 该列之后的列按新选中项 children 重建,索引重置为新列 defaultIndex\n optColumns.value = _resolveColumns();\n const nextIndexes = optIndexes.value.slice(0, columnIndex + 1);\n for (let i = nextIndexes.length; i < optColumns.value.length; i++) {\n nextIndexes.push(optColumns.value[i].defaultIndex);\n }\n optIndexes.value = nextIndexes;\n emit('onChange', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n columnIndex,\n });\n _syncValue();\n};\n\nconst onConfirm = () => {\n emit('onConfirm', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n });\n};\n\nconst onCancel = () => {\n emit('onCancel', {\n selectedValues: _getSelectedValues(),\n selectedOptions: _getSelectedOptions(),\n selectedIndexes: _getSelectedIndexes(),\n });\n};\n\n// 开放给外部使用的方法\nconst getValue = (): (string | number)[] => _getSelectedValues();\nconst setValue = (values: (string | number)[]): void => {\n _applyValue(values);\n // 同步回写 v-model:value,避免内部选中与父 value 长期不一致\n _syncValue();\n};\nconst getValueData = (): PickerOption[] => _getSelectedOptions();\nconst getSelectedOptions = (): PickerOption[] => _getSelectedOptions();\nconst confirm = (): void => onConfirm();\n\n// 导出类型\nexport interface ClPickerExpose {\n getValue: () => (string | number)[];\n setValue: (values: (string | number)[]) => void;\n getValueData: () => PickerOption[];\n getSelectedOptions: () => PickerOption[];\n confirm: () => void;\n}\n\n// defineExpose(必须放在最后)\ndefineExpose({ getValue, setValue, getValueData, getSelectedOptions, confirm });\n</script>\n"],"names":["MOMENTUM_TIME","MOMENTUM_DISTANCE","MOMENTUM_FRICTION","props","__props","emit","__emit","_keyIndex","CommonBase","_currentOffset","ref","_dragOffset","_isDragging","_transitionDuration","_startY","_rafId","_pendingOffset","_momentumStartTime","_momentumStartDelta","optVisibleHeight","computed","optCenter","optTotalOffset","optVisualIndex","styColumn","styList","optItemCls","inx","optItemSty","dist","_getClientY","e","touches","_getIndexByOffset","offset","_snapTo","targetOffset","len","currentIndex","found","step","indexDiff","_onDocMove","onTouchMove","_onDocUp","onTouchEnd","_startMouseListeners","_stopMouseListeners","onBeforeUnmount","watch","val","idx","onTouchStart","delta","now","distance","duration","momentum","_createElementBlock","_normalizeClass","_createElementVNode","_openBlock","_Fragment","_renderList","optionItem","_normalizeStyle","_hoisted_3","_toDisplayString","elId","optColumns","optIndexes","optFieldNames","optOptionHeight","optVisibleOptionNum","optSwipeDuration","styColumns","styFrame","clsParent","cls","CommonElement","_parseOption","item","obj","rawText","rawValue","rawChildren","text","value","children","opt","_isExplicitColumns","c","first","_resolveColumns","col","options","di","resolved","guard","_getSelectedValues","i","v","_getSelectedOptions","_getSelectedIndexes","_valuesEqual","a","b","_syncValue","values","old","_applyValue","newIndexes","target","onSelect","columnIndex","optionIndex","nextIndexes","onConfirm","onCancel","__expose","_unref","_hoisted_2","_renderSlot","_ctx","colItem","_createBlock","ClPickerColumn","$event","_hoisted_4","_createVNode","ClLoad","_hoisted_5","_hoisted_6"],"mappings":"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"}
@@ -1091,4 +1091,4 @@ const Ne = ["id"], je = {
1091
1091
  export {
1092
1092
  St as _
1093
1093
  };
1094
- //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-BFSRH9yz.js.map
1094
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-in1ZSapu.js.map