@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
@@ -1 +1 @@
1
- {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-N1GhNa1r.js","sources":["../../../src/libs/Mobile/PullToRefresh/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div class=\"ptr-track\">\n <div\n class=\"ptr-indicator\"\n :style=\"styIndicator\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <div\n class=\"ptr-indicator-inner\"\n :class=\"`ptr-state-${optState}`\"\n >\n <slot\n name=\"indicator\"\n :state=\"optState\"\n :distance=\"optPullDistance\"\n :threshold=\"optThreshold\"\n >\n <cl-load\n v-if=\"optState === 'loading'\"\n theme=\"circleSpinner\"\n size=\"small\"\n color=\"#999\"\n className=\"ptr-indicator-load\"\n />\n <template v-else>\n <i\n :class=\"pullIcon\"\n aria-hidden=\"true\"\n ></i>\n </template>\n <span class=\"ptr-text\">{{ optIndicatorText }}</span>\n </slot>\n </div>\n </div>\n <div\n ref=\"refElContent\"\n class=\"ptr-content\"\n :class=\"{ 'ptr-content-virtual': optIsVirtual }\"\n :style=\"styContent\"\n @scroll=\"onScrollScroller\"\n @touchstart=\"onPullStart\"\n @touchmove=\"onPullMove\"\n @touchend=\"onPullEnd\"\n @touchcancel=\"onPullEnd\"\n @mousedown=\"onPullStart\"\n >\n <div\n v-if=\"optIsVirtual\"\n class=\"ptr-scroller-wrap\"\n >\n <DynamicScroller\n class=\"ptr-scroller\"\n :items=\"optSafeList\"\n :min-item-size=\"optMinItemSize\"\n :key-field=\"keyField\"\n @scroll=\"onScrollScroller\"\n >\n <template v-slot:default=\"{ item, index, active }\">\n <DynamicScrollerItem\n :item=\"item\"\n :index=\"index\"\n :active=\"active\"\n :size-dependencies=\"_getSizeDependencies(item)\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :index=\"index\"\n :active=\"active\"\n />\n </DynamicScrollerItem>\n </template>\n <template v-slot:after>\n <div\n v-if=\"isLoading\"\n class=\"ptr-loadmore\"\n >\n <slot name=\"loadMore\">\n <cl-load\n theme=\"circleSpinner\"\n size=\"small\"\n color=\"#999\"\n className=\"ptr-loadmore-load\"\n />\n <span>{{ loadingText }}</span>\n </slot>\n </div>\n <template v-else></template>\n <div\n v-if=\"isFinished && !isLoading\"\n class=\"ptr-finished\"\n >\n <slot name=\"finished\">\n <span>{{ finishedText }}</span>\n </slot>\n </div>\n <template v-else></template>\n </template>\n </DynamicScroller>\n </div>\n <slot v-else></slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onBeforeUnmount, onDeactivated, type PropType } from 'vue';\nimport { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport './Index.css';\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css';\n\ndefineOptions({ name: 'ClPullToRefresh' });\n\n// props\nconst props = defineProps({\n id: String, // desc: 组件实例唯一标识,用于多实例场景下 DOM 查询限定\n className: String, // desc: 自定义CSS类名\n disabled: Boolean, // desc: 是否禁用下拉刷新\n threshold: {\n type: Number,\n default: 60, // desc: 下拉刷新阈值(px)\n },\n list: Array as () => any[], // desc: 列表数据,传入则启用虚拟滚动渲染\n minItemSize: {\n type: Number,\n default: 60, // desc: 列表项最小高度(px),用于 DynamicScroller 初始估算\n },\n keyField: {\n type: String,\n default: 'id', // desc: 虚拟滚动列表项的 key 字段名\n },\n isFinished: Boolean, // desc: 是否已加载完全部数据\n isLoading: Boolean, // desc: 是否正在加载更多\n pullIcon: {\n type: String,\n default: 'ptr-icon-arrow', // desc: 下拉刷新箭头图标类名(<i> 元素)\n },\n pullingText: {\n type: String,\n default: '下拉即可刷新...', // desc: 下拉中提示文字\n },\n readyText: {\n type: String,\n default: '释放即可刷新...', // desc: 达到阈值松手即可刷新的提示文字\n },\n refreshingText: {\n type: String,\n default: '加载中...', // desc: 刷新中提示文字\n },\n loadingText: {\n type: String,\n default: '加载中...', // desc: 加载更多时提示文字\n },\n finishedText: {\n type: String,\n default: '没有更多了', // desc: 已加载全部提示文字\n },\n sizeDependencies: {\n type: Function as PropType<\n (item: any) => Record<string, unknown> | unknown[] | null | undefined\n >,\n }, // desc: 列表项高度依赖项提取函数,用于动态高度重算\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'onRefresh'): void; // desc: 下拉达到阈值松手后触发刷新\n (e: 'onLoadMore'): void; // desc: 虚拟滚动滚动到底部时触发加载更多\n}>();\n// slots: indicator(下拉指示器,携带 state/distance/threshold), item(列表项,携带 item/index/active), loadMore(加载更多提示), finished(加载完成提示), default(非虚拟滚动时的默认内容)\n\nconst elId = props.id; // || `_elId_pulltorefresh-${CommonBase.getRandom(8)}`\n\n// ref\nconst refElContent = ref<HTMLElement | null>(null);\n\n// state\nconst optState = ref<'idle' | 'pulling' | 'ready' | 'loading'>('idle');\nconst optPullDistance = ref<number>(0);\nconst _startY = ref<number>(0);\nconst _isTracking = ref<boolean>(false);\nconst _isPulling = ref<boolean>(false);\nconst _scrollTop = ref<number>(0);\nlet _rafId: number | null = null;\nlet _pendingDeltaY = 0;\nlet _lastLoadMoreAt = 0;\nlet _lastProbeAt = 0;\nlet _probeTimer: number | null = null;\n\n// computed\nconst optThreshold = computed(() => {\n const t = props.threshold;\n // isFinite 兜底 NaN/undefined(default 60 已覆盖 undefined,NaN 需显式拦截)\n // typeof number 拦截隐式 Number() 转换的脏值('' → 0 / true → 1),Math.max(1, t) 钳制 0 值防阈值失禁\n return CommonBase.isFinite(t) && typeof t === 'number' ? Math.max(1, t) : 60;\n});\n\nconst optIsVirtual = computed(() => CommonBase.isArray(props.list));\n\n// 虚拟列表项过滤 null/undefined(第三方 DynamicScroller 对空项 getKey 抛 TypeError,渲染中断);\n// 契约:插槽 item/index 基于过滤后数组,脏项存在时 index 与父组件原 list 索引错位,父组件勿按 index 回写原 list\nconst optSafeList = computed(() =>\n optIsVirtual.value\n ? (props.list as unknown[]).filter(item => item !== null && item !== undefined)\n : [],\n);\n\nconst optMinItemSize = computed(() => {\n const v = props.minItemSize;\n // 与 optThreshold 同模式钳制(typeof number 拦脏值),防 0/NaN/负值导致 DynamicScroller 估算异常\n return CommonBase.isFinite(v) && typeof v === 'number' ? Math.max(1, v) : 60;\n});\n\nconst optIndicatorText = computed(() => {\n switch (optState.value) {\n case 'loading':\n return props.refreshingText;\n case 'ready':\n return props.readyText;\n case 'pulling':\n return props.pullingText;\n default:\n return '';\n }\n});\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = { 'panel-pulltorefresh': true };\n if (props.disabled) {\n cls['ptr-disabled'] = true;\n }\n if (_isPulling.value) {\n cls['ptr-is-pulling'] = true;\n }\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst styIndicator = computed(() => ({\n height: `${optPullDistance.value}px`,\n}));\n\n// 拖拽会话中接管手势(touch-action: none 使 preventDefault 生效,避免被浏览器原生 pan 吞掉);\n// 非拖拽时返回空,让 CSS 的 touch-action: pan-y 保留页面原生纵向滚动\nconst styContent = computed(() =>\n _isTracking.value && _isPulling.value ? { touchAction: 'none' } : {},\n);\n\n// 内部方法\n// 阻尼换算并封顶(0.4 平滑拉距,2×阈值封顶防极端长拖撑爆指示器)\nconst _calcDistance = (deltaY: number) => Math.min(deltaY * 0.4, optThreshold.value * 2);\n\nconst _isAtTop = () => {\n // 容忍 1px 亚像素回弹(iOS 滚动容器 scrollTop 会停在 0.1~1px)\n if (optIsVirtual.value) {\n return _scrollTop.value <= 1;\n }\n const el = refElContent.value;\n if (!el) return true;\n return el.scrollTop <= 1;\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// 适配函数包装,避免 as any 双断言绕过类型系统\nconst _onDocMove = ((e: Event) => onPullMove(e as MouseEvent)) as EventListener;\nconst _onDocUp = ((e: Event) => onPullEnd(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\nconst _resetPull = () => {\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n }\n _pendingDeltaY = 0;\n _isPulling.value = false;\n optPullDistance.value = 0;\n optState.value = 'idle';\n};\n// 提取内部方法,避免模板内联三元 + 函数调用\n// try/catch 兜底:sizeDependencies 为父组件提供的函数,抛错时不击穿模板渲染\nconst _getSizeDependencies = (item: unknown) => {\n if (!props.sizeDependencies) return undefined;\n try {\n return props.sizeDependencies(item);\n } catch {\n return undefined;\n }\n};\n\nconst _emitLoadMore = () => {\n const now = Date.now();\n if (now - _lastLoadMoreAt < 500) return;\n if (!props.isFinished && !props.isLoading) {\n _lastLoadMoreAt = now;\n emit('onLoadMore');\n }\n};\n\n// 虚拟滚动\"补满一屏\"探测补发:与滚动路径(_emitLoadMore 500ms 节流)分离,\n// 用独立微节流(_lastProbeAt),避免被滚动节流吞掉导致加载停摆(父端响应快 + 首屏不满时滚动路径不可达)\nconst _probeFill = () => {\n if (!optIsVirtual.value || props.isFinished || props.isLoading) return;\n const now = Date.now();\n if (now - _lastProbeAt < 100) {\n // 节流窗口内末次变化:延后到窗口结束补发一次,防被吞后无新 list 变化驱动导致补发停摆\n if (_probeTimer === null) {\n _probeTimer = window.setTimeout(() => {\n _probeTimer = null;\n _probeFill();\n }, 100);\n }\n return;\n }\n // 经模板静态类名定位 DynamicScroller 根滚动元素(class 绑定必然落根),不依赖第三方内部类名\n const scroller = refElContent.value?.querySelector<HTMLElement>('.ptr-scroller');\n if (!scroller) return;\n // 同步滚动位置缓存:list 替换/刷新后浏览器未必补发 scroll 事件,避免下拉被旧 _scrollTop 抑制或误判顶部\n _scrollTop.value = scroller.scrollTop || 0;\n // 容器不可见(clientHeight=0,如 keep-alive 停用/父未布局)时不补发,避免后台无谓请求\n if (scroller.clientHeight <= 0) return;\n if (scroller.scrollHeight <= scroller.clientHeight) {\n _lastProbeAt = now;\n // 与滚动路径共享 500ms 加载节流戳,防 probe 补发后父端 push 使列表可滚动、短窗口内滚动触底重复 onLoadMore\n _lastLoadMoreAt = now;\n emit('onLoadMore');\n }\n};\n\nconst _cleanupTracking = () => {\n _stopMouseListeners();\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n }\n _isTracking.value = false;\n};\n\n// 生命周期\nonBeforeUnmount(() => {\n _cleanupTracking();\n if (_probeTimer !== null) {\n clearTimeout(_probeTimer);\n _probeTimer = null;\n }\n});\nonDeactivated(() => {\n _cleanupTracking();\n // 非 loading 态复位视觉状态,避免 keep-alive 切回后指示器残留\n if (optState.value !== 'loading') _resetPull();\n});\n\n// watch\nwatch(\n () => props.disabled,\n val => {\n if (val) {\n _cleanupTracking();\n // loading 期间禁用只停交互,加载状态由父组件 finishRefresh 收尾\n if (optState.value !== 'loading') _resetPull();\n }\n },\n);\n\n// 虚拟模式重建时重置滚动位置标记,防止 list 置空/重赋后下拉被抑制\nwatch(\n () => optIsVirtual.value,\n val => {\n if (val) _scrollTop.value = 0;\n },\n);\n\n// 虚拟滚动内容不足一屏时 scroll-end 不触发,列表变化后主动补发 onLoadMore\n// 同时监听引用与长度,覆盖引用替换(等量替换)与原地修改(push)两类盲区\nwatch(\n () => [props.list, props.list?.length],\n async () => {\n if (!optIsVirtual.value) return;\n await nextTick();\n _probeFill();\n },\n { immediate: true },\n);\n\n// 事件方法\nconst onPullStart = (e: TouchEvent | MouseEvent) => {\n if (props.disabled || optState.value === 'loading') return;\n if (!('touches' in e) && (e as MouseEvent).button !== 0) return;\n // 上次会话未正常收尾(窗口外松手等)时先清理并复位视觉状态,避免残留 ready 态点击误触发刷新\n if (_isTracking.value) {\n _cleanupTracking();\n _resetPull();\n }\n _startY.value = _getClientY(e);\n _isTracking.value = true;\n if (!('touches' in e)) {\n _startMouseListeners();\n }\n};\n\nconst onPullMove = (e: TouchEvent | MouseEvent) => {\n if (!_isTracking.value || props.disabled) return;\n // 鼠标已无按键按下(窗口外松手)时自愈收尾,防止监听残留\n if (!('touches' in e) && (e as MouseEvent).buttons === 0) {\n onPullEnd();\n return;\n }\n _pendingDeltaY = _getClientY(e) - _startY.value;\n if (_pendingDeltaY > 0 && _isAtTop()) {\n _isPulling.value = true;\n e.preventDefault();\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null;\n const d = _calcDistance(_pendingDeltaY);\n optPullDistance.value = d;\n optState.value = d >= optThreshold.value ? 'ready' : 'pulling';\n });\n }\n } else if (_isPulling.value) {\n _resetPull();\n }\n};\n\nconst onPullEnd = (e?: TouchEvent | MouseEvent) => {\n if (!_isTracking.value) return;\n _isTracking.value = false;\n _stopMouseListeners();\n // 手势取消(来电/系统接管)不触发刷新,仅复位\n if (e?.type === 'touchcancel') {\n _resetPull();\n return;\n }\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n // RAF 尚未执行时按最新位移补算状态,防止快速松手丢 onRefresh(阻尼 0.4 + 2×阈值封顶)\n const d = _calcDistance(_pendingDeltaY);\n if (d >= 0) {\n optPullDistance.value = d;\n optState.value = d >= optThreshold.value ? 'ready' : 'pulling';\n }\n }\n if (props.disabled || !(_isPulling.value && optState.value === 'ready')) {\n _resetPull();\n } else {\n optState.value = 'loading';\n optPullDistance.value = optThreshold.value;\n // loading 期间不算拖拽,释放 ptr-is-pulling 类避免 user-select 持续锁定\n _isPulling.value = false;\n emit('onRefresh');\n }\n};\n\nconst onScrollScroller = (e: Event) => {\n const el = e.target as HTMLElement | null;\n _scrollTop.value = el?.scrollTop || 0;\n // 内容不足一屏时 scroll-end 不触发,主动补发 onLoadMore\n if (el && el.scrollTop + el.clientHeight >= el.scrollHeight) {\n _emitLoadMore();\n }\n};\n\n// 开放方法\nconst finishRefresh = () => {\n // 先终止跟踪会话(拖拽中调用时防监听残留与二次 emit),再复位视觉状态\n _cleanupTracking();\n _resetPull();\n // 下拉刷新替换短列表后清空加载/探测节流戳,避免补发 onLoadMore 被旧节流窗口吞掉\n _lastLoadMoreAt = 0;\n _lastProbeAt = 0;\n};\n\n// 导出类型\nexport interface ClPullToRefreshExpose {\n finishRefresh: () => void;\n}\n\ndefineExpose({ finishRefresh });\n</script>\n"],"names":["props","__props","emit","__emit","elId","refElContent","ref","optState","optPullDistance","_startY","_isTracking","_isPulling","_scrollTop","_rafId","_pendingDeltaY","_lastLoadMoreAt","_lastProbeAt","_probeTimer","optThreshold","computed","t","CommonBase","optIsVirtual","optSafeList","item","optMinItemSize","v","optIndicatorText","clsParent","cls","CommonElement","styIndicator","styContent","_calcDistance","deltaY","_isAtTop","el","_getClientY","touches","_onDocMove","onPullMove","_onDocUp","onPullEnd","_startMouseListeners","_stopMouseListeners","_resetPull","_getSizeDependencies","_emitLoadMore","now","_probeFill","scroller","_cleanupTracking","onBeforeUnmount","onDeactivated","watch","val","nextTick","onPullStart","d","onScrollScroller","__expose","_createElementBlock","_unref","_createElementVNode","_hoisted_2","_normalizeClass","_renderSlot","_ctx","_createBlock","ClLoad","_hoisted_3","_toDisplayString","_openBlock","_hoisted_4","_createVNode","DynamicScroller","index","active","DynamicScrollerItem","_hoisted_5","_Fragment","_hoisted_6"],"mappings":"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"}
1
+ {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-CpuYxzDD.js","sources":["../../../src/libs/Mobile/PullToRefresh/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div class=\"ptr-track\">\n <div\n class=\"ptr-indicator\"\n :style=\"styIndicator\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <div\n class=\"ptr-indicator-inner\"\n :class=\"`ptr-state-${optState}`\"\n >\n <slot\n name=\"indicator\"\n :state=\"optState\"\n :distance=\"optPullDistance\"\n :threshold=\"optThreshold\"\n >\n <cl-load\n v-if=\"optState === 'loading'\"\n theme=\"circleSpinner\"\n size=\"small\"\n color=\"#999\"\n className=\"ptr-indicator-load\"\n />\n <template v-else>\n <i\n :class=\"pullIcon\"\n aria-hidden=\"true\"\n ></i>\n </template>\n <span class=\"ptr-text\">{{ optIndicatorText }}</span>\n </slot>\n </div>\n </div>\n <div\n ref=\"refElContent\"\n class=\"ptr-content\"\n :class=\"{ 'ptr-content-virtual': optIsVirtual }\"\n :style=\"styContent\"\n @scroll=\"onScrollScroller\"\n @touchstart=\"onPullStart\"\n @touchmove=\"onPullMove\"\n @touchend=\"onPullEnd\"\n @touchcancel=\"onPullEnd\"\n @mousedown=\"onPullStart\"\n >\n <div\n v-if=\"optIsVirtual\"\n class=\"ptr-scroller-wrap\"\n >\n <DynamicScroller\n class=\"ptr-scroller\"\n :items=\"optSafeList\"\n :min-item-size=\"optMinItemSize\"\n :key-field=\"keyField\"\n @scroll=\"onScrollScroller\"\n >\n <template v-slot:default=\"{ item, index, active }\">\n <DynamicScrollerItem\n :item=\"item\"\n :index=\"index\"\n :active=\"active\"\n :size-dependencies=\"_getSizeDependencies(item)\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :index=\"index\"\n :active=\"active\"\n />\n </DynamicScrollerItem>\n </template>\n <template v-slot:after>\n <div\n v-if=\"isLoading\"\n class=\"ptr-loadmore\"\n >\n <slot name=\"loadMore\">\n <cl-load\n theme=\"circleSpinner\"\n size=\"small\"\n color=\"#999\"\n className=\"ptr-loadmore-load\"\n />\n <span>{{ loadingText }}</span>\n </slot>\n </div>\n <template v-else></template>\n <div\n v-if=\"isFinished && !isLoading\"\n class=\"ptr-finished\"\n >\n <slot name=\"finished\">\n <span>{{ finishedText }}</span>\n </slot>\n </div>\n <template v-else></template>\n </template>\n </DynamicScroller>\n </div>\n <slot v-else></slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onBeforeUnmount, onDeactivated, type PropType } from 'vue';\nimport { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport './Index.css';\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css';\n\ndefineOptions({ name: 'ClPullToRefresh' });\n\n// props\nconst props = defineProps({\n id: String, // desc: 组件实例唯一标识,用于多实例场景下 DOM 查询限定\n className: String, // desc: 自定义CSS类名\n disabled: Boolean, // desc: 是否禁用下拉刷新\n threshold: {\n type: Number,\n default: 60, // desc: 下拉刷新阈值(px)\n },\n list: Array as () => any[], // desc: 列表数据,传入则启用虚拟滚动渲染\n minItemSize: {\n type: Number,\n default: 60, // desc: 列表项最小高度(px),用于 DynamicScroller 初始估算\n },\n keyField: {\n type: String,\n default: 'id', // desc: 虚拟滚动列表项的 key 字段名\n },\n isFinished: Boolean, // desc: 是否已加载完全部数据\n isLoading: Boolean, // desc: 是否正在加载更多\n pullIcon: {\n type: String,\n default: 'ptr-icon-arrow', // desc: 下拉刷新箭头图标类名(<i> 元素)\n },\n pullingText: {\n type: String,\n default: '下拉即可刷新...', // desc: 下拉中提示文字\n },\n readyText: {\n type: String,\n default: '释放即可刷新...', // desc: 达到阈值松手即可刷新的提示文字\n },\n refreshingText: {\n type: String,\n default: '加载中...', // desc: 刷新中提示文字\n },\n loadingText: {\n type: String,\n default: '加载中...', // desc: 加载更多时提示文字\n },\n finishedText: {\n type: String,\n default: '没有更多了', // desc: 已加载全部提示文字\n },\n sizeDependencies: {\n type: Function as PropType<\n (item: any) => Record<string, unknown> | unknown[] | null | undefined\n >,\n }, // desc: 列表项高度依赖项提取函数,用于动态高度重算\n});\n\n// emit\nconst emit = defineEmits<{\n (e: 'onRefresh'): void; // desc: 下拉达到阈值松手后触发刷新\n (e: 'onLoadMore'): void; // desc: 虚拟滚动滚动到底部时触发加载更多\n}>();\n// slots: indicator(下拉指示器,携带 state/distance/threshold), item(列表项,携带 item/index/active), loadMore(加载更多提示), finished(加载完成提示), default(非虚拟滚动时的默认内容)\n\nconst elId = props.id; // || `_elId_pulltorefresh-${CommonBase.getRandom(8)}`\n\n// ref\nconst refElContent = ref<HTMLElement | null>(null);\n\n// state\nconst optState = ref<'idle' | 'pulling' | 'ready' | 'loading'>('idle');\nconst optPullDistance = ref<number>(0);\nconst _startY = ref<number>(0);\nconst _isTracking = ref<boolean>(false);\nconst _isPulling = ref<boolean>(false);\nconst _scrollTop = ref<number>(0);\nlet _rafId: number | null = null;\nlet _pendingDeltaY = 0;\nlet _lastLoadMoreAt = 0;\nlet _lastProbeAt = 0;\nlet _probeTimer: number | null = null;\n\n// computed\nconst optThreshold = computed(() => {\n const t = props.threshold;\n // isFinite 兜底 NaN/undefined(default 60 已覆盖 undefined,NaN 需显式拦截)\n // typeof number 拦截隐式 Number() 转换的脏值('' → 0 / true → 1),Math.max(1, t) 钳制 0 值防阈值失禁\n return CommonBase.isFinite(t) && typeof t === 'number' ? Math.max(1, t) : 60;\n});\n\nconst optIsVirtual = computed(() => CommonBase.isArray(props.list));\n\n// 虚拟列表项过滤 null/undefined(第三方 DynamicScroller 对空项 getKey 抛 TypeError,渲染中断);\n// 契约:插槽 item/index 基于过滤后数组,脏项存在时 index 与父组件原 list 索引错位,父组件勿按 index 回写原 list\nconst optSafeList = computed(() =>\n optIsVirtual.value\n ? (props.list as unknown[]).filter(item => item !== null && item !== undefined)\n : [],\n);\n\nconst optMinItemSize = computed(() => {\n const v = props.minItemSize;\n // 与 optThreshold 同模式钳制(typeof number 拦脏值),防 0/NaN/负值导致 DynamicScroller 估算异常\n return CommonBase.isFinite(v) && typeof v === 'number' ? Math.max(1, v) : 60;\n});\n\nconst optIndicatorText = computed(() => {\n switch (optState.value) {\n case 'loading':\n return props.refreshingText;\n case 'ready':\n return props.readyText;\n case 'pulling':\n return props.pullingText;\n default:\n return '';\n }\n});\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = { 'panel-pulltorefresh': true };\n if (props.disabled) {\n cls['ptr-disabled'] = true;\n }\n if (_isPulling.value) {\n cls['ptr-is-pulling'] = true;\n }\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst styIndicator = computed(() => ({\n height: `${optPullDistance.value}px`,\n}));\n\n// 拖拽会话中接管手势(touch-action: none 使 preventDefault 生效,避免被浏览器原生 pan 吞掉);\n// 非拖拽时返回空,让 CSS 的 touch-action: pan-y 保留页面原生纵向滚动\nconst styContent = computed(() =>\n _isTracking.value && _isPulling.value ? { touchAction: 'none' } : {},\n);\n\n// 内部方法\n// 阻尼换算并封顶(0.4 平滑拉距,2×阈值封顶防极端长拖撑爆指示器)\nconst _calcDistance = (deltaY: number) => Math.min(deltaY * 0.4, optThreshold.value * 2);\n\nconst _isAtTop = () => {\n // 容忍 1px 亚像素回弹(iOS 滚动容器 scrollTop 会停在 0.1~1px)\n if (optIsVirtual.value) {\n return _scrollTop.value <= 1;\n }\n const el = refElContent.value;\n if (!el) return true;\n return el.scrollTop <= 1;\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// 适配函数包装,避免 as any 双断言绕过类型系统\nconst _onDocMove = ((e: Event) => onPullMove(e as MouseEvent)) as EventListener;\nconst _onDocUp = ((e: Event) => onPullEnd(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\nconst _resetPull = () => {\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n }\n _pendingDeltaY = 0;\n _isPulling.value = false;\n optPullDistance.value = 0;\n optState.value = 'idle';\n};\n// 提取内部方法,避免模板内联三元 + 函数调用\n// try/catch 兜底:sizeDependencies 为父组件提供的函数,抛错时不击穿模板渲染\nconst _getSizeDependencies = (item: unknown) => {\n if (!props.sizeDependencies) return undefined;\n try {\n return props.sizeDependencies(item);\n } catch {\n return undefined;\n }\n};\n\nconst _emitLoadMore = () => {\n const now = Date.now();\n if (now - _lastLoadMoreAt < 500) return;\n if (!props.isFinished && !props.isLoading) {\n _lastLoadMoreAt = now;\n emit('onLoadMore');\n }\n};\n\n// 虚拟滚动\"补满一屏\"探测补发:与滚动路径(_emitLoadMore 500ms 节流)分离,\n// 用独立微节流(_lastProbeAt),避免被滚动节流吞掉导致加载停摆(父端响应快 + 首屏不满时滚动路径不可达)\nconst _probeFill = () => {\n if (!optIsVirtual.value || props.isFinished || props.isLoading) return;\n const now = Date.now();\n if (now - _lastProbeAt < 100) {\n // 节流窗口内末次变化:延后到窗口结束补发一次,防被吞后无新 list 变化驱动导致补发停摆\n if (_probeTimer === null) {\n _probeTimer = window.setTimeout(() => {\n _probeTimer = null;\n _probeFill();\n }, 100);\n }\n return;\n }\n // 经模板静态类名定位 DynamicScroller 根滚动元素(class 绑定必然落根),不依赖第三方内部类名\n const scroller = refElContent.value?.querySelector<HTMLElement>('.ptr-scroller');\n if (!scroller) return;\n // 同步滚动位置缓存:list 替换/刷新后浏览器未必补发 scroll 事件,避免下拉被旧 _scrollTop 抑制或误判顶部\n _scrollTop.value = scroller.scrollTop || 0;\n // 容器不可见(clientHeight=0,如 keep-alive 停用/父未布局)时不补发,避免后台无谓请求\n if (scroller.clientHeight <= 0) return;\n if (scroller.scrollHeight <= scroller.clientHeight) {\n _lastProbeAt = now;\n // 与滚动路径共享 500ms 加载节流戳,防 probe 补发后父端 push 使列表可滚动、短窗口内滚动触底重复 onLoadMore\n _lastLoadMoreAt = now;\n emit('onLoadMore');\n }\n};\n\nconst _cleanupTracking = () => {\n _stopMouseListeners();\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n }\n _isTracking.value = false;\n};\n\n// 生命周期\nonBeforeUnmount(() => {\n _cleanupTracking();\n if (_probeTimer !== null) {\n clearTimeout(_probeTimer);\n _probeTimer = null;\n }\n});\nonDeactivated(() => {\n _cleanupTracking();\n // 非 loading 态复位视觉状态,避免 keep-alive 切回后指示器残留\n if (optState.value !== 'loading') _resetPull();\n});\n\n// watch\nwatch(\n () => props.disabled,\n val => {\n if (val) {\n _cleanupTracking();\n // loading 期间禁用只停交互,加载状态由父组件 finishRefresh 收尾\n if (optState.value !== 'loading') _resetPull();\n }\n },\n);\n\n// 虚拟模式重建时重置滚动位置标记,防止 list 置空/重赋后下拉被抑制\nwatch(\n () => optIsVirtual.value,\n val => {\n if (val) _scrollTop.value = 0;\n },\n);\n\n// 虚拟滚动内容不足一屏时 scroll-end 不触发,列表变化后主动补发 onLoadMore\n// 同时监听引用与长度,覆盖引用替换(等量替换)与原地修改(push)两类盲区\nwatch(\n () => [props.list, props.list?.length],\n async () => {\n if (!optIsVirtual.value) return;\n await nextTick();\n _probeFill();\n },\n { immediate: true },\n);\n\n// 事件方法\nconst onPullStart = (e: TouchEvent | MouseEvent) => {\n if (props.disabled || optState.value === 'loading') return;\n if (!('touches' in e) && (e as MouseEvent).button !== 0) return;\n // 上次会话未正常收尾(窗口外松手等)时先清理并复位视觉状态,避免残留 ready 态点击误触发刷新\n if (_isTracking.value) {\n _cleanupTracking();\n _resetPull();\n }\n _startY.value = _getClientY(e);\n _isTracking.value = true;\n if (!('touches' in e)) {\n _startMouseListeners();\n }\n};\n\nconst onPullMove = (e: TouchEvent | MouseEvent) => {\n if (!_isTracking.value || props.disabled) return;\n // 鼠标已无按键按下(窗口外松手)时自愈收尾,防止监听残留\n if (!('touches' in e) && (e as MouseEvent).buttons === 0) {\n onPullEnd();\n return;\n }\n _pendingDeltaY = _getClientY(e) - _startY.value;\n if (_pendingDeltaY > 0 && _isAtTop()) {\n _isPulling.value = true;\n e.preventDefault();\n if (_rafId === null) {\n _rafId = requestAnimationFrame(() => {\n _rafId = null;\n const d = _calcDistance(_pendingDeltaY);\n optPullDistance.value = d;\n optState.value = d >= optThreshold.value ? 'ready' : 'pulling';\n });\n }\n } else if (_isPulling.value) {\n _resetPull();\n }\n};\n\nconst onPullEnd = (e?: TouchEvent | MouseEvent) => {\n if (!_isTracking.value) return;\n _isTracking.value = false;\n _stopMouseListeners();\n // 手势取消(来电/系统接管)不触发刷新,仅复位\n if (e?.type === 'touchcancel') {\n _resetPull();\n return;\n }\n if (_rafId !== null) {\n cancelAnimationFrame(_rafId);\n _rafId = null;\n // RAF 尚未执行时按最新位移补算状态,防止快速松手丢 onRefresh(阻尼 0.4 + 2×阈值封顶)\n const d = _calcDistance(_pendingDeltaY);\n if (d >= 0) {\n optPullDistance.value = d;\n optState.value = d >= optThreshold.value ? 'ready' : 'pulling';\n }\n }\n if (props.disabled || !(_isPulling.value && optState.value === 'ready')) {\n _resetPull();\n } else {\n optState.value = 'loading';\n optPullDistance.value = optThreshold.value;\n // loading 期间不算拖拽,释放 ptr-is-pulling 类避免 user-select 持续锁定\n _isPulling.value = false;\n emit('onRefresh');\n }\n};\n\nconst onScrollScroller = (e: Event) => {\n const el = e.target as HTMLElement | null;\n _scrollTop.value = el?.scrollTop || 0;\n // 内容不足一屏时 scroll-end 不触发,主动补发 onLoadMore\n if (el && el.scrollTop + el.clientHeight >= el.scrollHeight) {\n _emitLoadMore();\n }\n};\n\n// 开放方法\nconst finishRefresh = () => {\n // 先终止跟踪会话(拖拽中调用时防监听残留与二次 emit),再复位视觉状态\n _cleanupTracking();\n _resetPull();\n // 下拉刷新替换短列表后清空加载/探测节流戳,避免补发 onLoadMore 被旧节流窗口吞掉\n _lastLoadMoreAt = 0;\n _lastProbeAt = 0;\n};\n\n// 导出类型\nexport interface ClPullToRefreshExpose {\n finishRefresh: () => void;\n}\n\ndefineExpose({ finishRefresh });\n</script>\n"],"names":["props","__props","emit","__emit","elId","refElContent","ref","optState","optPullDistance","_startY","_isTracking","_isPulling","_scrollTop","_rafId","_pendingDeltaY","_lastLoadMoreAt","_lastProbeAt","_probeTimer","optThreshold","computed","t","CommonBase","optIsVirtual","optSafeList","item","optMinItemSize","v","optIndicatorText","clsParent","cls","CommonElement","styIndicator","styContent","_calcDistance","deltaY","_isAtTop","el","_getClientY","touches","_onDocMove","onPullMove","_onDocUp","onPullEnd","_startMouseListeners","_stopMouseListeners","_resetPull","_getSizeDependencies","_emitLoadMore","now","_probeFill","scroller","_cleanupTracking","onBeforeUnmount","onDeactivated","watch","val","nextTick","onPullStart","d","onScrollScroller","__expose","_createElementBlock","_unref","_createElementVNode","_hoisted_2","_normalizeClass","_renderSlot","_ctx","_createBlock","ClLoad","_hoisted_3","_toDisplayString","_openBlock","_hoisted_4","_createVNode","DynamicScroller","index","active","DynamicScrollerItem","_hoisted_5","_Fragment","_hoisted_6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA,UAAMA,IAAQC,GAmDRC,IAAOC,GAMPC,IAAOJ,EAAM,IAGbK,IAAeC,EAAwB,IAAI,GAG3CC,IAAWD,EAA8C,MAAM,GAC/DE,IAAkBF,EAAY,CAAC,GAC/BG,IAAUH,EAAY,CAAC,GACvBI,IAAcJ,EAAa,EAAK,GAChCK,IAAaL,EAAa,EAAK,GAC/BM,IAAaN,EAAY,CAAC;AAChC,QAAIO,IAAwB,MACxBC,IAAiB,GACjBC,IAAkB,GAClBC,IAAe,GACfC,IAA6B;AAGjC,UAAMC,IAAeC,EAAS,MAAM;AAClC,YAAMC,IAAIpB,EAAM;AAGhB,aAAOqB,EAAW,SAASD,CAAC,KAAK,OAAOA,KAAM,WAAW,KAAK,IAAI,GAAGA,CAAC,IAAI;AAAA,IAC5E,CAAC,GAEKE,IAAeH,EAAS,MAAME,EAAW,QAAQrB,EAAM,IAAI,CAAC,GAI5DuB,IAAcJ;AAAA,MAAS,MAC3BG,EAAa,QACRtB,EAAM,KAAmB,OAAO,CAAAwB,MAAQA,KAAS,IAA0B,IAC5E,CAAA;AAAA,IAAC,GAGDC,KAAiBN,EAAS,MAAM;AACpC,YAAMO,IAAI1B,EAAM;AAEhB,aAAOqB,EAAW,SAASK,CAAC,KAAK,OAAOA,KAAM,WAAW,KAAK,IAAI,GAAGA,CAAC,IAAI;AAAA,IAC5E,CAAC,GAEKC,KAAmBR,EAAS,MAAM;AACtC,cAAQZ,EAAS,OAAA;AAAA,QACf,KAAK;AACH,iBAAOP,EAAM;AAAA,QACf,KAAK;AACH,iBAAOA,EAAM;AAAA,QACf,KAAK;AACH,iBAAOA,EAAM;AAAA,QACf;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb,CAAC,GAEK4B,KAAYT,EAAS,MAAM;AAC/B,UAAIU,IAA+B,EAAE,uBAAuB,GAAA;AAC5D,aAAI7B,EAAM,aACR6B,EAAI,cAAc,IAAI,KAEpBlB,EAAW,UACbkB,EAAI,gBAAgB,IAAI,KAE1BA,IAAMR,EAAW,aAAaQ,GAAKC,GAAc,iBAAiB9B,EAAM,SAAS,CAAC,GAC3E6B;AAAA,IACT,CAAC,GAEKE,KAAeZ,EAAS,OAAO;AAAA,MACnC,QAAQ,GAAGX,EAAgB,KAAK;AAAA,IAAA,EAChC,GAIIwB,KAAab;AAAA,MAAS,MAC1BT,EAAY,SAASC,EAAW,QAAQ,EAAE,aAAa,WAAW,CAAA;AAAA,IAAC,GAK/DsB,IAAgB,CAACC,MAAmB,KAAK,IAAIA,IAAS,KAAKhB,EAAa,QAAQ,CAAC,GAEjFiB,KAAW,MAAM;AAErB,UAAIb,EAAa;AACf,eAAOV,EAAW,SAAS;AAE7B,YAAMwB,IAAK/B,EAAa;AACxB,aAAK+B,IACEA,EAAG,aAAa,IADP;AAAA,IAElB,GAEMC,IAAc,CAAC,MAAuC;AAC1D,UAAI,aAAa,GAAG;AAClB,cAAMC,IAAW,EAAiB;AAClC,eAAOA,EAAQ,SAAS,IAAIA,EAAQ,CAAC,EAAE,UAAU;AAAA,MACnD;AACA,aAAQ,EAAiB;AAAA,IAC3B,GAGMC,KAAc,CAAC,MAAaC,EAAW,CAAe,IACtDC,KAAY,CAAC,MAAaC,EAAU,CAAe,IAEnDC,KAAuB,MAAM;AACjC,eAAS,iBAAiB,aAAaJ,CAAU,GACjD,SAAS,iBAAiB,WAAWE,CAAQ;AAAA,IAC/C,GAEMG,IAAsB,MAAM;AAChC,eAAS,oBAAoB,aAAaL,CAAU,GACpD,SAAS,oBAAoB,WAAWE,CAAQ;AAAA,IAClD,GAEMI,IAAa,MAAM;AACvB,MAAIhC,MAAW,SACb,qBAAqBA,CAAM,GAC3BA,IAAS,OAEXC,IAAiB,GACjBH,EAAW,QAAQ,IACnBH,EAAgB,QAAQ,GACxBD,EAAS,QAAQ;AAAA,IACnB,GAGMuC,KAAuB,CAACtB,MAAkB;AAC9C,UAAKxB,EAAM;AACX,YAAI;AACF,iBAAOA,EAAM,iBAAiBwB,CAAI;AAAA,QACpC,QAAQ;AACN;AAAA,QACF;AAAA,IACF,GAEMuB,KAAgB,MAAM;AAC1B,YAAMC,IAAM,KAAK,IAAA;AACjB,MAAIA,IAAMjC,IAAkB,OACxB,CAACf,EAAM,cAAc,CAACA,EAAM,cAC9Be,IAAkBiC,GAClB9C,EAAK,YAAY;AAAA,IAErB,GAIM+C,IAAa,MAAM;AACvB,UAAI,CAAC3B,EAAa,SAAStB,EAAM,cAAcA,EAAM,UAAW;AAChE,YAAMgD,IAAM,KAAK,IAAA;AACjB,UAAIA,IAAMhC,IAAe,KAAK;AAE5B,QAAIC,MAAgB,SAClBA,IAAc,OAAO,WAAW,MAAM;AACpC,UAAAA,IAAc,MACdgC,EAAA;AAAA,QACF,GAAG,GAAG;AAER;AAAA,MACF;AAEA,YAAMC,IAAW7C,EAAa,OAAO,cAA2B,eAAe;AAC/E,MAAK6C,MAELtC,EAAW,QAAQsC,EAAS,aAAa,GAErC,EAAAA,EAAS,gBAAgB,MACzBA,EAAS,gBAAgBA,EAAS,iBACpClC,IAAegC,GAEfjC,IAAkBiC,GAClB9C,EAAK,YAAY;AAAA,IAErB,GAEMiD,IAAmB,MAAM;AAC7B,MAAAP,EAAA,GACI/B,MAAW,SACb,qBAAqBA,CAAM,GAC3BA,IAAS,OAEXH,EAAY,QAAQ;AAAA,IACtB;AAGA,IAAA0C,GAAgB,MAAM;AACpB,MAAAD,EAAA,GACIlC,MAAgB,SAClB,aAAaA,CAAW,GACxBA,IAAc;AAAA,IAElB,CAAC,GACDoC,GAAc,MAAM;AAClB,MAAAF,EAAA,GAEI5C,EAAS,UAAU,aAAWsC,EAAA;AAAA,IACpC,CAAC,GAGDS;AAAA,MACE,MAAMtD,EAAM;AAAA,MACZ,CAAAuD,MAAO;AACL,QAAIA,MACFJ,EAAA,GAEI5C,EAAS,UAAU,aAAWsC,EAAA;AAAA,MAEtC;AAAA,IAAA,GAIFS;AAAA,MACE,MAAMhC,EAAa;AAAA,MACnB,CAAAiC,MAAO;AACL,QAAIA,QAAgB,QAAQ;AAAA,MAC9B;AAAA,IAAA,GAKFD;AAAA,MACE,MAAM,CAACtD,EAAM,MAAMA,EAAM,MAAM,MAAM;AAAA,MACrC,YAAY;AACV,QAAKsB,EAAa,UAClB,MAAMkC,GAAA,GACNP,EAAA;AAAA,MACF;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK;AAIpB,UAAMQ,IAAc,CAAC,MAA+B;AAClD,MAAIzD,EAAM,YAAYO,EAAS,UAAU,aACrC,EAAE,aAAa,MAAO,EAAiB,WAAW,MAElDG,EAAY,UACdyC,EAAA,GACAN,EAAA,IAEFpC,EAAQ,QAAQ4B,EAAY,CAAC,GAC7B3B,EAAY,QAAQ,IACd,aAAa,KACjBiC,GAAA;AAAA,IAEJ,GAEMH,IAAa,CAAC,MAA+B;AACjD,UAAI,GAAC9B,EAAY,SAASV,EAAM,WAEhC;AAAA,YAAI,EAAE,aAAa,MAAO,EAAiB,YAAY,GAAG;AACxD,UAAA0C,EAAA;AACA;AAAA,QACF;AACA,QAAA5B,IAAiBuB,EAAY,CAAC,IAAI5B,EAAQ,OACtCK,IAAiB,KAAKqB,QACxBxB,EAAW,QAAQ,IACnB,EAAE,eAAA,GACEE,MAAW,SACbA,IAAS,sBAAsB,MAAM;AACnC,UAAAA,IAAS;AACT,gBAAM6C,IAAIzB,EAAcnB,CAAc;AACtC,UAAAN,EAAgB,QAAQkD,GACxBnD,EAAS,QAAQmD,KAAKxC,EAAa,QAAQ,UAAU;AAAA,QACvD,CAAC,MAEMP,EAAW,SACpBkC,EAAA;AAAA;AAAA,IAEJ,GAEMH,IAAY,CAAC,MAAgC;AACjD,UAAKhC,EAAY,OAIjB;AAAA,YAHAA,EAAY,QAAQ,IACpBkC,EAAA,GAEI,GAAG,SAAS,eAAe;AAC7B,UAAAC,EAAA;AACA;AAAA,QACF;AACA,YAAIhC,MAAW,MAAM;AACnB,+BAAqBA,CAAM,GAC3BA,IAAS;AAET,gBAAM6C,IAAIzB,EAAcnB,CAAc;AACtC,UAAI4C,KAAK,MACPlD,EAAgB,QAAQkD,GACxBnD,EAAS,QAAQmD,KAAKxC,EAAa,QAAQ,UAAU;AAAA,QAEzD;AACA,QAAIlB,EAAM,YAAY,EAAEW,EAAW,SAASJ,EAAS,UAAU,WAC7DsC,EAAA,KAEAtC,EAAS,QAAQ,WACjBC,EAAgB,QAAQU,EAAa,OAErCP,EAAW,QAAQ,IACnBT,EAAK,WAAW;AAAA;AAAA,IAEpB,GAEMyD,IAAmB,CAAC,MAAa;AACrC,YAAMvB,IAAK,EAAE;AACb,MAAAxB,EAAW,QAAQwB,GAAI,aAAa,GAEhCA,KAAMA,EAAG,YAAYA,EAAG,gBAAgBA,EAAG,gBAC7CW,GAAA;AAAA,IAEJ;AAiBA,WAAAa,EAAa,EAAE,eAdO,MAAM;AAE1B,MAAAT,EAAA,GACAN,EAAA,GAEA9B,IAAkB,GAClBC,IAAe;AAAA,IACjB,GAO8B,mBArf5B6C,EA2GM,OAAA;AAAA,MA1GH,IAAIC,EAAA1D,CAAA;AAAA,MACJ,SAAOwB,GAAA,KAAS;AAAA,IAAA;MAEjBmC,EAsGM,OAtGNC,IAsGM;AAAA,QArGJD,EAgCM,OAAA;AAAA,UA/BJ,OAAM;AAAA,UACL,SAAOhC,GAAA,KAAY;AAAA,UACpB,MAAK;AAAA,UACL,aAAU;AAAA,QAAA;UAEVgC,EAyBM,OAAA;AAAA,YAxBJ,OAAKE,EAAA,CAAC,uBAAqB,aACN1D,EAAA,KAAQ,EAAA,CAAA;AAAA,UAAA;YAE7B2D,EAoBOC,EAAA,QAAA,aAAA;AAAA,cAlBJ,OAAO5D,EAAA;AAAA,cACP,UAAUC,EAAA;AAAA,cACV,WAAWU,EAAA;AAAA,YAAA,GAJd,MAoBO;AAAA,cAbGX,EAAA,UAAQ,kBADhB6D,GAMEC,GAAA;AAAA;gBAJA,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,WAAU;AAAA,cAAA,YAGVR,EAGK,KAAA;AAAA;gBAFF,SAAO5D,EAAA,QAAQ;AAAA,gBAChB,eAAY;AAAA,cAAA;cAGhB8D,EAAoD,QAApDO,IAAoDC,EAA1B5C,GAAA,KAAgB,GAAA,CAAA;AAAA,YAAA;;;QAIhDoC,EAmEM,OAAA;AAAA,mBAlEA;AAAA,UAAJ,KAAI1D;AAAA,UACJ,OAAK4D,EAAA,CAAC,eAAa,EAAA,uBACc3C,EAAA,MAAA,CAAY,CAAA;AAAA,UAC5C,SAAOU,GAAA,KAAU;AAAA,UACjB,UAAQ2B;AAAA,UACR,cAAYF;AAAA,UACZ,aAAWjB;AAAA,UACX,YAAUE;AAAA,UACV,eAAaA;AAAA,UACb,aAAWe;AAAA,QAAA;UAGJnC,EAAA,SADRkD,EAAA,GAAAX,EAqDM,OArDNY,IAqDM;AAAA,YAjDJC,EAgDkBZ,EAAAa,EAAA,GAAA;AAAA,cA/ChB,OAAM;AAAA,cACL,OAAOpD,EAAA;AAAA,cACP,iBAAeE,GAAA;AAAA,cACf,aAAWxB,EAAA;AAAA,cACX,UAAQ0D;AAAA,YAAA;cAEQ,WACf,CAYsB,EAbI,MAAAnC,GAAM,OAAAoD,GAAO,QAAAC,QAAM;AAAA,gBAC7CH,EAYsBZ,EAAAgB,EAAA,GAAA;AAAA,kBAXnB,MAAAtD;AAAA,kBACA,OAAAoD;AAAA,kBACA,QAAAC;AAAA,kBACA,qBAAmB/B,GAAqBtB,CAAI;AAAA,gBAAA;6BAE7C,MAKE;AAAA,oBALF0C,EAKEC,EAAA,QAAA,QAAA;AAAA,sBAHC,MAAA3C;AAAA,sBACA,OAAAoD;AAAA,sBACA,QAAAC;AAAA,oBAAA;;;;;cAIU,SACf,MAaM;AAAA,gBAZE5E,EAAA,aADRuE,EAAA,GAAAX,EAaM,OAbNkB,IAaM;AAAA,kBATJb,EAQOC,0BARP,MAQO;AAAA,oBAPLO,EAKEL,GAAA;AAAA,sBAJA,OAAM;AAAA,sBACN,MAAK;AAAA,sBACL,OAAM;AAAA,sBACN,WAAU;AAAA,oBAAA;oBAEZN,EAA8B,gBAArB9D,EAAA,WAAW,GAAA,CAAA;AAAA,kBAAA;4BAGxB4D,EAA4BmB,GAAA,EAAA,KAAA,EAAA,GAAA,IAAA,EAAA;AAAA,gBAEpB/E,EAAA,eAAeA,EAAA,aADvBuE,KAAAX,EAOM,OAPNoB,IAOM;AAAA,kBAHJf,EAEOC,0BAFP,MAEO;AAAA,oBADLJ,EAA+B,gBAAtB9D,EAAA,YAAY,GAAA,CAAA;AAAA,kBAAA;4BAGzB4D,EAA4BmB,GAAA,EAAA,KAAA,EAAA,GAAA,CAAA,GAAA,EAAA;AAAA,cAAA;;;gBAIlCd,EAAoBC,EAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA;AAAA,QAAA;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("vue"),o=require("./base-C2QOJBgB.js"),C=require("./index-DAgtltwJ.js"),B=require("./use-D0Yu2Dbn.js"),_=["id"],E=["alt"],N=e.defineComponent({name:"ClImage",__name:"Index",props:{id:{},className:{},src:{},alt:{},height:{},width:{},isCircle:{type:Boolean},fit:{},isCrossOrigin:{type:Boolean}},emits:["onInit"],setup(l,{emit:u}){const n=l,g=u,m=e.ref(o.CommonBase.isNonEmptyString(n.src)?n.src:""),a=e.ref(null),d=e.computed(()=>o.CommonBase.isNonEmptyString(n.alt)?n.alt:""),p=n.id;B.useLazyload(a,m,{callback:{loaded:()=>{c()},error:()=>{c()}},isCrossOrigin:n.isCrossOrigin});const y=e.computed(()=>{let t={"panel-imageBox":!0,"imageBox-circle":n.isCircle};return t=o.CommonBase.getJsonMerge(t,C.CommonElement.getClassNameJson(n.className)),t}),f=e.computed(()=>{const{width:t,height:s}=n,i={};return o.CommonBase.isNonEmptyString(t)&&(i.width=t),o.CommonBase.isNonEmptyString(s)&&(i.height=s),i}),h=e.computed(()=>{const{width:t,height:s,fit:i}=n,r={};return o.CommonBase.isNonEmptyString(i)&&(r["object-fit"]=i,o.CommonBase.isNonEmptyString(t)&&(r.width=t),o.CommonBase.isNonEmptyString(s)&&(r.height=s)),r});function c(){g("onInit")}return e.watch(()=>n.src,t=>{m.value=o.CommonBase.isNonEmptyString(t)?t:""}),(t,s)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(p),class:e.normalizeClass(y.value),style:e.normalizeStyle(f.value)},[e.createElementVNode("img",{ref_key:"refElImage",ref:a,alt:d.value,style:e.normalizeStyle(h.value)},null,12,E)],14,_))}});exports._sfc_main=N;
2
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-CumTbPny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-CumTbPny.js","sources":["../../../src/libs/Element/Image/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n :style=\"styParent\"\n >\n <img\n ref=\"refElImage\"\n :alt=\"optAlt\"\n :style=\"styImg\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport { useLazyload } from '../LazyImage/use';\nimport './Index.css';\n\n// defineOptions\ndefineOptions({\n name: 'ClImage',\n});\n\n// props\nconst props = defineProps<{\n id?: string; // desc: 自定义id\n className?: string; // desc: 自定义CSS类名\n src: string; // desc: 图片地址\n alt?: string; // desc: 图片替代文本\n height?: string; // desc: 图片高度\n width?: string; // desc: 图片宽度\n isCircle?: boolean; // desc: 是否圆形展示\n fit?: string; // desc: 图片填充方式 | enum: fill, contain, cover, none, scale-down(可自定义)\n isCrossOrigin?: boolean; // desc: 是否跨域加载\n}>();\n\n// emit\nconst emit = defineEmits<{\n (e: 'onInit'): void; // desc: 图片加载完成时触发(成功或失败均触发)\n}>();\n\n// 常量 / 变量定义\nconst optSrcUrl = ref(CommonBase.isNonEmptyString(props.src) ? props.src : '');\nconst refElImage = ref<HTMLImageElement | null>(null);\n\nconst optAlt = computed(() => (CommonBase.isNonEmptyString(props.alt) ? props.alt : ''));\n\n// elId _elId_image\nconst elId = props.id; // || `_elId_image_${CommonBase.getRandom(5)}`;\n\nuseLazyload(refElImage, optSrcUrl, {\n callback: {\n loaded: () => {\n _emitInit();\n },\n error: () => {\n _emitInit();\n },\n },\n isCrossOrigin: props.isCrossOrigin,\n});\n\n// computed\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = {\n 'panel-imageBox': true,\n 'imageBox-circle': props.isCircle,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst styParent = computed(() => {\n const { width, height } = props;\n const sty: Record<string, string> = {};\n if (CommonBase.isNonEmptyString(width)) {\n sty.width = width;\n }\n if (CommonBase.isNonEmptyString(height)) {\n sty.height = height;\n }\n return sty;\n});\n\nconst styImg = computed(() => {\n const { width, height, fit } = props;\n const sty: Record<string, string> = {};\n if (CommonBase.isNonEmptyString(fit)) {\n sty['object-fit'] = fit;\n if (CommonBase.isNonEmptyString(width)) {\n sty.width = width;\n }\n if (CommonBase.isNonEmptyString(height)) {\n sty.height = height;\n }\n }\n return sty;\n});\n\n// emit包装\nfunction _emitInit() {\n emit('onInit');\n}\n\n// watch\nwatch(\n () => props.src,\n newValue => {\n optSrcUrl.value = CommonBase.isNonEmptyString(newValue) ? newValue : '';\n },\n);\n</script>\n"],"names":["props","__props","emit","__emit","optSrcUrl","ref","CommonBase","refElImage","optAlt","computed","elId","useLazyload","_emitInit","clsParent","cls","CommonElement","styParent","width","height","sty","styImg","fit","watch","newValue","_createElementBlock","_unref","_createElementVNode"],"mappings":"qWA2BA,MAAMA,EAAQC,EAaRC,EAAOC,EAKPC,EAAYC,MAAIC,EAAAA,WAAW,iBAAiBN,EAAM,GAAG,EAAIA,EAAM,IAAM,EAAE,EACvEO,EAAaF,EAAAA,IAA6B,IAAI,EAE9CG,EAASC,EAAAA,SAAS,IAAOH,EAAAA,WAAW,iBAAiBN,EAAM,GAAG,EAAIA,EAAM,IAAM,EAAG,EAGjFU,EAAOV,EAAM,GAEnBW,EAAAA,YAAYJ,EAAYH,EAAW,CACjC,SAAU,CACR,OAAQ,IAAM,CACZQ,EAAA,CACF,EACA,MAAO,IAAM,CACXA,EAAA,CACF,CAAA,EAEF,cAAeZ,EAAM,aAAA,CACtB,EAGD,MAAMa,EAAYJ,EAAAA,SAAS,IAAM,CAC/B,IAAIK,EAA+B,CACjC,iBAAkB,GAClB,kBAAmBd,EAAM,QAAA,EAE3B,OAAAc,EAAMR,EAAAA,WAAW,aAAaQ,EAAKC,EAAAA,cAAc,iBAAiBf,EAAM,SAAS,CAAC,EAC3Ec,CACT,CAAC,EAEKE,EAAYP,EAAAA,SAAS,IAAM,CAC/B,KAAM,CAAE,MAAAQ,EAAO,OAAAC,CAAA,EAAWlB,EACpBmB,EAA8B,CAAA,EACpC,OAAIb,EAAAA,WAAW,iBAAiBW,CAAK,IACnCE,EAAI,MAAQF,GAEVX,EAAAA,WAAW,iBAAiBY,CAAM,IACpCC,EAAI,OAASD,GAERC,CACT,CAAC,EAEKC,EAASX,EAAAA,SAAS,IAAM,CAC5B,KAAM,CAAE,MAAAQ,EAAO,OAAAC,EAAQ,IAAAG,CAAA,EAAQrB,EACzBmB,EAA8B,CAAA,EACpC,OAAIb,EAAAA,WAAW,iBAAiBe,CAAG,IACjCF,EAAI,YAAY,EAAIE,EAChBf,EAAAA,WAAW,iBAAiBW,CAAK,IACnCE,EAAI,MAAQF,GAEVX,EAAAA,WAAW,iBAAiBY,CAAM,IACpCC,EAAI,OAASD,IAGVC,CACT,CAAC,EAGD,SAASP,GAAY,CACnBV,EAAK,QAAQ,CACf,CAGAoB,OAAAA,EAAAA,MACE,IAAMtB,EAAM,IACZuB,GAAY,CACVnB,EAAU,MAAQE,EAAAA,WAAW,iBAAiBiB,CAAQ,EAAIA,EAAW,EACvE,CAAA,wBA/GAC,EAAAA,mBAUM,MAAA,CATH,GAAIC,EAAAA,MAAAf,CAAA,EACJ,uBAAOG,EAAA,KAAS,EAChB,uBAAOG,EAAA,KAAS,CAAA,GAEjBU,EAAAA,mBAIE,MAAA,SAHI,aAAJ,IAAInB,EACH,IAAKC,EAAA,MACL,uBAAOY,EAAA,KAAM,CAAA"}
@@ -2,7 +2,7 @@ import { defineComponent as q, inject as A, reactive as H, ref as O, computed as
2
2
  import { C as r } from "./base-DU7nGSf6.js";
3
3
  import { C as S } from "./index-DvNmQjNH.js";
4
4
  import { _ as b } from "./Index.vue_vue_type_script_setup_true_lang-D4kAoS8e.js";
5
- import { _ as I } from "./Index.vue_vue_type_script_setup_true_lang-C9mOHVoE.js";
5
+ import { _ as I } from "./Index.vue_vue_type_script_setup_true_lang-B-yZtW91.js";
6
6
  import { _ as ae } from "./Index.vue_vue_type_script_setup_true_lang-C06bNoBf.js";
7
7
  const ie = ["id"], se = { class: "previewExample-image-icon" }, ne = { class: "previewExample-video-img previewExample-image" }, oe = ["onClick"], re = {
8
8
  key: 3,
@@ -259,4 +259,4 @@ const ie = ["id"], se = { class: "previewExample-image-icon" }, ne = { class: "p
259
259
  export {
260
260
  ye as _
261
261
  };
262
- //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-NdqbsOrG.js.map
262
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-CvF_iIQS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-NdqbsOrG.js","sources":["../../../src/libs/Web/PreviewExample/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div :class=\"clsContainer\">\n <div\n v-for=\"(info, inx) in optList\"\n :key=\"`${_keyIndex}-${inx}`\"\n :class=\"clsItem\"\n :style=\"styWH\"\n v-bind=\"attrItemFun(info)\"\n >\n <template v-if=\"type === 'image'\">\n <cl-image\n :src=\"info.value\"\n :class=\"{ 'cursor-pointer': isClickImagePreview }\"\n @click.stop=\"onClickImage(info, inx)\"\n />\n <div class=\"previewExample-image-icon\">\n <cl-icon-font\n title=\"预览\"\n name=\"search\"\n aria-label=\"预览\"\n @click.stop=\"onPreview(info, inx, 'image')\"\n />\n <cl-icon-font\n v-if=\"isShowDelete\"\n title=\"删除\"\n name=\"close\"\n aria-label=\"删除\"\n @click.stop=\"onDelete(inx)\"\n />\n <template v-else></template>\n </div>\n </template>\n <template v-else-if=\"type === 'video'\">\n <div class=\"previewExample-video-img previewExample-image\">\n <cl-image\n v-if=\"info.imgUrl && info.imgUrl.length > 0\"\n :src=\"info.imgUrl\"\n />\n </div>\n <div\n class=\"previewExample-video-icon\"\n @click.stop=\"onPreview(info, inx, 'video')\"\n >\n <cl-icon-font\n name=\"play\"\n aria-label=\"播放\"\n />\n </div>\n </template>\n <template v-else></template>\n <div\n v-if=\"(label && label.length > 0) || (info.label && info.label.length > 0)\"\n class=\"previewExample-label-msg\"\n >\n {{ label && label.length > 0 ? label : info.label }}\n </div>\n <template v-else></template>\n <div\n v-if=\"showNum > -1 && inx === optList.length - 1 && optPageBase.totalCount > showNum\"\n class=\"previewExample-totalCount\"\n >\n <span>共{{ optPageBase.totalCount }}{{ type === 'image' ? '张' : '个' }}</span>\n </div>\n <template v-else></template>\n <slot\n name=\"extend\"\n :data=\"info\"\n :inx=\"inx\"\n />\n </div>\n <div\n v-if=\"isShowLoading && isLoading\"\n :class=\"[`previewExample-${type}`]\"\n :style=\"styWH\"\n >\n <cl-load\n theme=\"circleNotch\"\n size=\"large\"\n />\n </div>\n <template v-else></template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, watch, onMounted, nextTick, computed, reactive, ref } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClIconFont from '../../Element/IconFont/Index.vue';\nimport ClImage from '../../Element/Image/Index.vue';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport './index.css';\n\nexport interface ListInfo {\n value: string;\n imgUrl?: string;\n label?: string;\n id?: string;\n ranId?: string;\n}\n\ninterface ClGlobals {\n preview: {\n show: (opts: {\n type: string;\n src: string | string[];\n showIndex: number;\n isShowCopy: boolean;\n }) => void;\n };\n}\n\ndefineOptions({ name: 'ClPreviewExample' });\n\nconst props = defineProps({\n id: String, // desc: 元素唯一标识\n className: String, // desc: 自定义 CSS 类名\n classContainer: String, // desc: 容器自定义 CSS 类名\n classItem: String, // desc: 单项自定义 CSS 类名\n type: {\n type: String,\n default: 'image', // desc: 预览类型 | enum: image, video\n validator: (v: string) => ['image', 'video'].includes(v),\n },\n width: {\n type: [Number, String],\n default: 'auto', // desc: 预览区域宽度\n },\n height: {\n type: Number,\n required: true, // desc: 预览区域高度(必填)\n },\n isWidthFull: {\n type: Boolean,\n default: true, // desc: 宽度是否铺满 | enum: true, false\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => [], // desc: 预览数据列表\n },\n label: String, // desc: 标签文本\n previewIconSize: {\n type: String,\n default: 'large', // desc: 预览图标尺寸 | enum: large, small (可自定义)\n },\n isShowLoading: {\n type: Boolean,\n default: false, // desc: 是否显示加载状态\n },\n isLoading: {\n type: Boolean,\n default: false, // desc: 是否加载中\n },\n isShowDelete: {\n type: Boolean,\n default: false, // desc: 是否显示删除按钮\n },\n showNum: {\n type: Number,\n default: -1, // desc: 最多显示数量,-1 表示不限制\n },\n srcValueKey: {\n type: String,\n default: 'value', // desc: 列表项中取 src 的 key 名\n },\n isShowCopy: {\n type: Boolean,\n default: true, // desc: 是否显示复制功能\n },\n isClickImagePreview: {\n type: Boolean,\n default: false, // desc: 点击图片是否触发预览\n },\n previewCallback: Function, // desc: 自定义预览回调\n});\n\nconst emit = defineEmits<{ onDelete: [inx: number] }>(); // desc: 删除项时触发,参数为项索引\n// slots: extend\n\nconst _clGlobals = inject<ClGlobals | null>('$ClGlobals', null);\n\nconst _keyIndex = `previewexample-${CommonBase.getRandom(5)}`;\n\nconst elId = props.id; // || `_elId_previewexample-${CommonBase.getRandom(5)}`\n\nconst optPageBase = reactive({\n totalCount: -1,\n});\nconst optList = ref<ListInfo[]>([]);\n\nconst optIsWidthEmpty = computed(() => {\n const { width } = props;\n let isEmpty = false;\n if (CommonBase.isEmpty(width)) {\n isEmpty = true;\n } else {\n if (typeof width === 'string' && width === 'auto') {\n isEmpty = true;\n } else if (typeof width === 'number' && width <= 0) {\n isEmpty = true;\n }\n }\n return isEmpty;\n});\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = {\n 'panel-previewexample': true,\n 'previewExample-width-default': props.isWidthFull,\n 'previewExample-width-auto': !props.isWidthFull,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst clsContainer = computed(() => {\n let cls: Record<string, boolean> = {\n 'previewExample-container': true,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.classContainer));\n return cls;\n});\n\nconst clsItem = computed(() => {\n const { type, previewIconSize } = props;\n let cls: Record<string, boolean> = {\n 'previewExample-item': true,\n };\n cls[`previewExample-${type}`] = true;\n cls[`previewExample-iconSize-${previewIconSize}`] = true;\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.classItem));\n return cls;\n});\n\nconst styWH = computed(() => {\n const sty: Record<string, string> = {\n height: `${props.height}px`,\n };\n if (!optIsWidthEmpty.value) {\n let width = props.width.toString();\n if (width.indexOf('%') === -1) {\n width = `${props.width}px`;\n }\n sty['width'] = width;\n }\n return sty;\n});\n\nconst _emitDelete = (inx: number) => {\n emit('onDelete', inx);\n};\n\nconst _initList = () => {\n const { list, showNum, srcValueKey } = props;\n let newList = CommonBase.getListClone(list);\n let newShowNum = list.length;\n if (showNum > 0 && list.length >= showNum) {\n newShowNum = showNum;\n }\n const temp: ListInfo[] = [];\n newList.forEach((info: any, i: number) => {\n if (CommonBase.isEmpty(info)) return;\n if (i + 1 <= newShowNum) {\n if (CommonBase.isString(info)) {\n temp.push({ value: info });\n } else {\n const srcValue = CommonBase.isExistJsonKey(info, srcValueKey)\n ? info[srcValueKey]\n : info.value;\n temp.push({ ...info, value: srcValue });\n }\n }\n });\n newList = temp;\n optPageBase.totalCount = list.length;\n optList.value = newList;\n};\n\nconst _initMain = () => {\n _initList();\n};\n\nconst attrItemFun = (info: any) => {\n const attr: Record<string, string> = {};\n if (!CommonBase.isEmpty(info.id)) {\n attr['data-id'] = info.id;\n }\n if (!CommonBase.isEmpty(info.ranId)) {\n attr['data-ran-id'] = info.ranId;\n }\n return attr;\n};\n\nonMounted(() => {\n nextTick(() => {\n _initMain();\n });\n});\n\nwatch(\n () => props.list,\n () => {\n _initList();\n },\n { deep: true },\n);\n\nconst onClickImage = (info: any, showIndex: number) => {\n if (props.isClickImagePreview) {\n onPreview(info, showIndex, 'image');\n }\n};\n\nconst onPreview = (info: any, showIndex: number, type: string) => {\n try {\n if (props.previewCallback) {\n props.previewCallback(type, info, showIndex);\n } else {\n if (!_clGlobals || CommonBase.isEmpty(_clGlobals.preview)) return;\n const { list } = props;\n let src;\n if (list.length === 1) {\n src = info.value;\n } else {\n src = list.map((p: any) => (CommonBase.isString(p) ? p : p.value));\n }\n _clGlobals.preview.show({\n type,\n src,\n showIndex,\n isShowCopy: props.isShowCopy,\n });\n }\n } catch (e) {\n // 预览异常静默处理,避免阻塞用户交互\n }\n};\n\nconst onDelete = (inx: number) => {\n _emitDelete(inx);\n};\n</script>\n"],"names":["props","__props","emit","__emit","_clGlobals","inject","_keyIndex","CommonBase","elId","optPageBase","reactive","optList","ref","optIsWidthEmpty","computed","width","isEmpty","clsParent","cls","CommonElement","clsContainer","clsItem","type","previewIconSize","styWH","sty","_emitDelete","inx","_initList","list","showNum","srcValueKey","newList","newShowNum","temp","info","i","srcValue","_initMain","attrItemFun","attr","onMounted","nextTick","watch","onClickImage","showIndex","onPreview","src","p","onDelete","_createElementBlock","_unref","_createElementVNode","_openBlock","_Fragment","_renderList","_mergeProps","_createVNode","ClImage","_withModifiers","$event","_hoisted_2","ClIconFont","_createBlock","_hoisted_3","_hoisted_5","_toDisplayString","_hoisted_6","_renderSlot","_ctx","ClLoad"],"mappings":"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"}
1
+ {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-CvF_iIQS.js","sources":["../../../src/libs/Web/PreviewExample/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div :class=\"clsContainer\">\n <div\n v-for=\"(info, inx) in optList\"\n :key=\"`${_keyIndex}-${inx}`\"\n :class=\"clsItem\"\n :style=\"styWH\"\n v-bind=\"attrItemFun(info)\"\n >\n <template v-if=\"type === 'image'\">\n <cl-image\n :src=\"info.value\"\n :class=\"{ 'cursor-pointer': isClickImagePreview }\"\n @click.stop=\"onClickImage(info, inx)\"\n />\n <div class=\"previewExample-image-icon\">\n <cl-icon-font\n title=\"预览\"\n name=\"search\"\n aria-label=\"预览\"\n @click.stop=\"onPreview(info, inx, 'image')\"\n />\n <cl-icon-font\n v-if=\"isShowDelete\"\n title=\"删除\"\n name=\"close\"\n aria-label=\"删除\"\n @click.stop=\"onDelete(inx)\"\n />\n <template v-else></template>\n </div>\n </template>\n <template v-else-if=\"type === 'video'\">\n <div class=\"previewExample-video-img previewExample-image\">\n <cl-image\n v-if=\"info.imgUrl && info.imgUrl.length > 0\"\n :src=\"info.imgUrl\"\n />\n </div>\n <div\n class=\"previewExample-video-icon\"\n @click.stop=\"onPreview(info, inx, 'video')\"\n >\n <cl-icon-font\n name=\"play\"\n aria-label=\"播放\"\n />\n </div>\n </template>\n <template v-else></template>\n <div\n v-if=\"(label && label.length > 0) || (info.label && info.label.length > 0)\"\n class=\"previewExample-label-msg\"\n >\n {{ label && label.length > 0 ? label : info.label }}\n </div>\n <template v-else></template>\n <div\n v-if=\"showNum > -1 && inx === optList.length - 1 && optPageBase.totalCount > showNum\"\n class=\"previewExample-totalCount\"\n >\n <span>共{{ optPageBase.totalCount }}{{ type === 'image' ? '张' : '个' }}</span>\n </div>\n <template v-else></template>\n <slot\n name=\"extend\"\n :data=\"info\"\n :inx=\"inx\"\n />\n </div>\n <div\n v-if=\"isShowLoading && isLoading\"\n :class=\"[`previewExample-${type}`]\"\n :style=\"styWH\"\n >\n <cl-load\n theme=\"circleNotch\"\n size=\"large\"\n />\n </div>\n <template v-else></template>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, watch, onMounted, nextTick, computed, reactive, ref } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport ClIconFont from '../../Element/IconFont/Index.vue';\nimport ClImage from '../../Element/Image/Index.vue';\nimport ClLoad from '../../Element/Load/Index.vue';\nimport './index.css';\n\nexport interface ListInfo {\n value: string;\n imgUrl?: string;\n label?: string;\n id?: string;\n ranId?: string;\n}\n\ninterface ClGlobals {\n preview: {\n show: (opts: {\n type: string;\n src: string | string[];\n showIndex: number;\n isShowCopy: boolean;\n }) => void;\n };\n}\n\ndefineOptions({ name: 'ClPreviewExample' });\n\nconst props = defineProps({\n id: String, // desc: 元素唯一标识\n className: String, // desc: 自定义 CSS 类名\n classContainer: String, // desc: 容器自定义 CSS 类名\n classItem: String, // desc: 单项自定义 CSS 类名\n type: {\n type: String,\n default: 'image', // desc: 预览类型 | enum: image, video\n validator: (v: string) => ['image', 'video'].includes(v),\n },\n width: {\n type: [Number, String],\n default: 'auto', // desc: 预览区域宽度\n },\n height: {\n type: Number,\n required: true, // desc: 预览区域高度(必填)\n },\n isWidthFull: {\n type: Boolean,\n default: true, // desc: 宽度是否铺满 | enum: true, false\n },\n list: {\n type: Array as () => ListInfo[],\n default: () => [], // desc: 预览数据列表\n },\n label: String, // desc: 标签文本\n previewIconSize: {\n type: String,\n default: 'large', // desc: 预览图标尺寸 | enum: large, small (可自定义)\n },\n isShowLoading: {\n type: Boolean,\n default: false, // desc: 是否显示加载状态\n },\n isLoading: {\n type: Boolean,\n default: false, // desc: 是否加载中\n },\n isShowDelete: {\n type: Boolean,\n default: false, // desc: 是否显示删除按钮\n },\n showNum: {\n type: Number,\n default: -1, // desc: 最多显示数量,-1 表示不限制\n },\n srcValueKey: {\n type: String,\n default: 'value', // desc: 列表项中取 src 的 key 名\n },\n isShowCopy: {\n type: Boolean,\n default: true, // desc: 是否显示复制功能\n },\n isClickImagePreview: {\n type: Boolean,\n default: false, // desc: 点击图片是否触发预览\n },\n previewCallback: Function, // desc: 自定义预览回调\n});\n\nconst emit = defineEmits<{ onDelete: [inx: number] }>(); // desc: 删除项时触发,参数为项索引\n// slots: extend\n\nconst _clGlobals = inject<ClGlobals | null>('$ClGlobals', null);\n\nconst _keyIndex = `previewexample-${CommonBase.getRandom(5)}`;\n\nconst elId = props.id; // || `_elId_previewexample-${CommonBase.getRandom(5)}`\n\nconst optPageBase = reactive({\n totalCount: -1,\n});\nconst optList = ref<ListInfo[]>([]);\n\nconst optIsWidthEmpty = computed(() => {\n const { width } = props;\n let isEmpty = false;\n if (CommonBase.isEmpty(width)) {\n isEmpty = true;\n } else {\n if (typeof width === 'string' && width === 'auto') {\n isEmpty = true;\n } else if (typeof width === 'number' && width <= 0) {\n isEmpty = true;\n }\n }\n return isEmpty;\n});\n\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = {\n 'panel-previewexample': true,\n 'previewExample-width-default': props.isWidthFull,\n 'previewExample-width-auto': !props.isWidthFull,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst clsContainer = computed(() => {\n let cls: Record<string, boolean> = {\n 'previewExample-container': true,\n };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.classContainer));\n return cls;\n});\n\nconst clsItem = computed(() => {\n const { type, previewIconSize } = props;\n let cls: Record<string, boolean> = {\n 'previewExample-item': true,\n };\n cls[`previewExample-${type}`] = true;\n cls[`previewExample-iconSize-${previewIconSize}`] = true;\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.classItem));\n return cls;\n});\n\nconst styWH = computed(() => {\n const sty: Record<string, string> = {\n height: `${props.height}px`,\n };\n if (!optIsWidthEmpty.value) {\n let width = props.width.toString();\n if (width.indexOf('%') === -1) {\n width = `${props.width}px`;\n }\n sty['width'] = width;\n }\n return sty;\n});\n\nconst _emitDelete = (inx: number) => {\n emit('onDelete', inx);\n};\n\nconst _initList = () => {\n const { list, showNum, srcValueKey } = props;\n let newList = CommonBase.getListClone(list);\n let newShowNum = list.length;\n if (showNum > 0 && list.length >= showNum) {\n newShowNum = showNum;\n }\n const temp: ListInfo[] = [];\n newList.forEach((info: any, i: number) => {\n if (CommonBase.isEmpty(info)) return;\n if (i + 1 <= newShowNum) {\n if (CommonBase.isString(info)) {\n temp.push({ value: info });\n } else {\n const srcValue = CommonBase.isExistJsonKey(info, srcValueKey)\n ? info[srcValueKey]\n : info.value;\n temp.push({ ...info, value: srcValue });\n }\n }\n });\n newList = temp;\n optPageBase.totalCount = list.length;\n optList.value = newList;\n};\n\nconst _initMain = () => {\n _initList();\n};\n\nconst attrItemFun = (info: any) => {\n const attr: Record<string, string> = {};\n if (!CommonBase.isEmpty(info.id)) {\n attr['data-id'] = info.id;\n }\n if (!CommonBase.isEmpty(info.ranId)) {\n attr['data-ran-id'] = info.ranId;\n }\n return attr;\n};\n\nonMounted(() => {\n nextTick(() => {\n _initMain();\n });\n});\n\nwatch(\n () => props.list,\n () => {\n _initList();\n },\n { deep: true },\n);\n\nconst onClickImage = (info: any, showIndex: number) => {\n if (props.isClickImagePreview) {\n onPreview(info, showIndex, 'image');\n }\n};\n\nconst onPreview = (info: any, showIndex: number, type: string) => {\n try {\n if (props.previewCallback) {\n props.previewCallback(type, info, showIndex);\n } else {\n if (!_clGlobals || CommonBase.isEmpty(_clGlobals.preview)) return;\n const { list } = props;\n let src;\n if (list.length === 1) {\n src = info.value;\n } else {\n src = list.map((p: any) => (CommonBase.isString(p) ? p : p.value));\n }\n _clGlobals.preview.show({\n type,\n src,\n showIndex,\n isShowCopy: props.isShowCopy,\n });\n }\n } catch (e) {\n // 预览异常静默处理,避免阻塞用户交互\n }\n};\n\nconst onDelete = (inx: number) => {\n _emitDelete(inx);\n};\n</script>\n"],"names":["props","__props","emit","__emit","_clGlobals","inject","_keyIndex","CommonBase","elId","optPageBase","reactive","optList","ref","optIsWidthEmpty","computed","width","isEmpty","clsParent","cls","CommonElement","clsContainer","clsItem","type","previewIconSize","styWH","sty","_emitDelete","inx","_initList","list","showNum","srcValueKey","newList","newShowNum","temp","info","i","srcValue","_initMain","attrItemFun","attr","onMounted","nextTick","watch","onClickImage","showIndex","onPreview","src","p","onDelete","_createElementBlock","_unref","_createElementVNode","_openBlock","_Fragment","_renderList","_mergeProps","_createVNode","ClImage","_withModifiers","$event","_hoisted_2","ClIconFont","_createBlock","_hoisted_3","_hoisted_5","_toDisplayString","_hoisted_6","_renderSlot","_ctx","ClLoad"],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { defineComponent as z, reactive as A, ref as q, computed as S, onMounted as W, nextTick as H, watch as k, openBlock as V, createElementBlock as E, normalizeClass as Q, unref as X, Fragment as Y, renderList as Z, normalizeStyle as ee, createVNode as L, withCtx as te } from "vue";
2
+ import { C as a } from "./base-DU7nGSf6.js";
3
+ import { C as se } from "./index-DvNmQjNH.js";
4
+ import { u as ae } from "./language-BxAxu5Gv.js";
5
+ import { _ as ne } from "./Validate.vue_vue_type_script_setup_true_lang-Bquk40ES.js";
6
+ import { _ as oe } from "./Index.vue_vue_type_script_setup_true_lang-in1ZSapu.js";
7
+ const le = ["id"], me = /* @__PURE__ */ z({
8
+ name: "ClSelectCascade",
9
+ __name: "Index",
10
+ props: {
11
+ id: String,
12
+ // desc: 自定义元素ID
13
+ value: [String, Number],
14
+ // desc: 选中的值
15
+ className: {
16
+ type: String,
17
+ default: ""
18
+ // desc: 自定义CSS类名
19
+ },
20
+ disabled: {
21
+ type: Boolean,
22
+ default: !1
23
+ // desc: 是否禁用
24
+ },
25
+ list: {
26
+ type: Array,
27
+ default: () => []
28
+ // desc: 级联数据列表
29
+ },
30
+ placeholder: String,
31
+ // desc: 各层级占位符,多个用 | 分隔
32
+ isClear: {
33
+ type: Boolean,
34
+ default: !1
35
+ // desc: 是否可清空
36
+ },
37
+ isSearch: {
38
+ type: Boolean,
39
+ default: !1
40
+ // desc: 是否可搜索
41
+ },
42
+ parentKey: {
43
+ type: String,
44
+ default: "parentId"
45
+ // desc: 父级键名字段
46
+ },
47
+ topParentValue: {
48
+ type: String,
49
+ default: "0"
50
+ // desc: 顶级父值
51
+ },
52
+ width: String,
53
+ // desc: 各层级下拉宽度,多个用 | 分隔,需带单位(px/%)
54
+ isCheckValidate: {
55
+ type: Boolean,
56
+ default: !1
57
+ // desc: 是否启用校验
58
+ },
59
+ validateRules: {
60
+ type: Array,
61
+ default: () => [{ r: "required" }]
62
+ // desc: 校验规则
63
+ },
64
+ isShowInMsg: {
65
+ type: Boolean,
66
+ default: !0
67
+ // desc: 校验信息是否在消息中显示
68
+ }
69
+ },
70
+ emits: {
71
+ "update:value": (p) => !0,
72
+ // desc: 值变化时触发
73
+ onChange: (p) => !0
74
+ // desc: 选中变化时触发
75
+ },
76
+ setup(p, { expose: K, emit: F }) {
77
+ const i = p, I = F, { optPageLanguage: B, getPageLanguage: M } = ae();
78
+ M("common");
79
+ const N = `selectCascade-${a.getRandom(5)}`, $ = i.id, u = A({
80
+ lastValue: i.value,
81
+ isFirstDataFinish: !1
82
+ }), g = q([]), d = {
83
+ dataJson: {},
84
+ dataGroup: {},
85
+ parentIdsJson: {}
86
+ }, J = S(() => B.value.pleaseSelect), b = S(() => {
87
+ const { placeholder: e } = i;
88
+ return a.isNonEmptyString(e) ? e.split("|") : [];
89
+ }), G = S(() => {
90
+ const { width: e } = i;
91
+ return a.isNonEmptyString(e) ? e.split("|") : [];
92
+ }), O = S(() => {
93
+ let e = { "panel-selectCascade": !0 };
94
+ return e = a.getJsonMerge(e, se.getClassNameJson(i.className)), e;
95
+ }), x = (e) => {
96
+ e !== u.lastValue && (u.lastValue = e, I("update:value", e), I("onChange", e));
97
+ }, _ = (e) => a.isExistJsonKey(d.dataGroup, e), R = (e) => _(e) ? d.dataGroup[e] : [], D = (e) => a.isExistJsonKey(d.dataJson, e) ? d.dataJson[e] : null, v = () => `top_${i.topParentValue}`, w = (e) => {
98
+ const { parentKey: t, topParentValue: s } = i, n = {}, o = {};
99
+ a.isEmpty(e) || e.forEach((r) => {
100
+ const l = a.getJsonClone(r);
101
+ if (!a.isExistJsonKey(l, "id") || !a.isExistJsonKey(l, t))
102
+ return;
103
+ const c = l.id.toString(), f = l[t].toString();
104
+ n[c] = l;
105
+ const h = f === s.toString() ? v() : f;
106
+ a.isExistJsonKey(o, h) || (o[h] = []), o[h].push(l);
107
+ }), d.dataJson = n, d.dataGroup = o;
108
+ }, m = (e, t) => {
109
+ const s = {
110
+ idx: e,
111
+ pId: t,
112
+ placeholder: J.value,
113
+ list: [],
114
+ sty: {},
115
+ selected: ""
116
+ };
117
+ if (!a.isEmpty(t)) {
118
+ const l = R(t);
119
+ s.list = a.getListClone(l);
120
+ }
121
+ const n = b.value, o = n.length;
122
+ o > 0 && (o > e ? s.placeholder = a.isEmpty(n[e]) ? J.value : n[e] : o === 1 && (s.placeholder = n[0]));
123
+ const r = G.value;
124
+ return r.length > e && (a.isEmpty(r[e]) || (s.sty.width = r[e], s.sty.flex = "none")), s;
125
+ }, C = (e, t) => {
126
+ const { parentKey: s, topParentValue: n } = i;
127
+ let o = [];
128
+ if (t && t.indexOf(e) > -1)
129
+ return [];
130
+ const r = t ? t.concat([e]) : [e];
131
+ if (a.isExistJsonKey(d.parentIdsJson, e))
132
+ o = d.parentIdsJson[e];
133
+ else {
134
+ const l = D(e);
135
+ if (l != null) {
136
+ const c = l[s].toString();
137
+ if (c !== n.toString()) {
138
+ const f = D(c);
139
+ if (f != null) {
140
+ o.push(c);
141
+ const h = C(c, r);
142
+ h.length > 0 && (o = o.concat(h));
143
+ }
144
+ }
145
+ }
146
+ d.parentIdsJson[e] = o;
147
+ }
148
+ return o;
149
+ }, y = (e) => {
150
+ let t = a.isUndefined(e) ? i.value : e;
151
+ t != null && !a.isEmpty(t) && !a.isExistJsonKey(d.dataJson, t.toString()) && (t = "");
152
+ const s = [];
153
+ if (t == null || a.isEmpty(t))
154
+ s.push(m(0, v())), s.push(m(1, ""));
155
+ else {
156
+ const n = t.toString(), o = [...C(n)].reverse(), r = o.length;
157
+ if (r > 0) {
158
+ o.forEach((c, f) => {
159
+ const h = f === 0 ? v() : c, P = m(f, h);
160
+ P.selected = c, s.push(P);
161
+ });
162
+ const l = m(r, o[r - 1]);
163
+ l.selected = n, s.push(l);
164
+ } else {
165
+ const l = m(0, v());
166
+ l.selected = n, s.push(l);
167
+ }
168
+ }
169
+ g.value = s;
170
+ }, j = () => {
171
+ w(i.list), y(), u.isFirstDataFinish = !0, u.lastValue = i.value;
172
+ };
173
+ W(() => {
174
+ H(() => {
175
+ j();
176
+ });
177
+ }), k(
178
+ () => i.value,
179
+ (e) => {
180
+ e !== u.lastValue && u.isFirstDataFinish && (y(), u.lastValue = e);
181
+ }
182
+ ), k(
183
+ () => i.list,
184
+ (e) => {
185
+ if (!u.isFirstDataFinish) {
186
+ u.isFirstDataFinish = !0;
187
+ return;
188
+ }
189
+ d.parentIdsJson = {}, w(e);
190
+ const { value: t } = i, s = t != null && !a.isEmpty(t) && a.isExistJsonKey(d.dataJson, t.toString()) ? t : "";
191
+ y(s), u.lastValue = s;
192
+ }
193
+ );
194
+ const T = () => !0, U = (e, t) => {
195
+ let s = "";
196
+ if (a.isEmpty(e) && t === 0)
197
+ y("");
198
+ else if (a.isEmpty(e)) {
199
+ if (g.value.splice(t + 1), t > 0) {
200
+ const n = g.value[t - 1];
201
+ n && (s = n.selected);
202
+ }
203
+ } else {
204
+ const n = e.toString();
205
+ _(n) ? (g.value.splice(t + 1), g.value.push(m(t + 1, n))) : (s = e, g.value.splice(t + 1));
206
+ }
207
+ x(s);
208
+ };
209
+ return K({
210
+ getValue: () => u.lastValue,
211
+ getValueData: () => {
212
+ const e = u.lastValue;
213
+ let t = "";
214
+ if (e != null && !a.isEmpty(e)) {
215
+ const s = e.toString(), n = C(s), o = n.length > 0 ? n.slice().reverse().concat([s]) : [s], r = [];
216
+ o.forEach((l) => {
217
+ const c = d.dataJson[l];
218
+ c != null && !a.isEmpty(c.name) && r.push(c.name);
219
+ }), t = r.join(" → ");
220
+ }
221
+ return {
222
+ value: e,
223
+ show: t || (e != null ? e.toString() : "")
224
+ };
225
+ },
226
+ setValue: (e) => {
227
+ y(e), u.lastValue = e;
228
+ }
229
+ }), (e, t) => (V(), E("div", {
230
+ id: X($),
231
+ class: Q(O.value)
232
+ }, [
233
+ (V(!0), E(Y, null, Z(g.value, (s, n) => (V(), E("div", {
234
+ key: `${N}-${n}`,
235
+ class: "selectCascade-item",
236
+ style: ee(s.sty)
237
+ }, [
238
+ L(ne, {
239
+ isShowMsg: p.isShowInMsg,
240
+ isCheck: p.isCheckValidate,
241
+ checkValue: s.selected,
242
+ rules: p.validateRules
243
+ }, {
244
+ default: te(() => [
245
+ L(oe, {
246
+ isClear: p.isClear,
247
+ isSearch: p.isSearch,
248
+ placeholder: s.placeholder,
249
+ list: s.list,
250
+ disabled: p.disabled,
251
+ value: s.selected,
252
+ "onUpdate:value": (o) => s.selected = o,
253
+ onOpenBefore: T,
254
+ onOnChange: (o) => U(o, n)
255
+ }, null, 8, ["isClear", "isSearch", "placeholder", "list", "disabled", "value", "onUpdate:value", "onOnChange"])
256
+ ]),
257
+ _: 2
258
+ }, 1032, ["isShowMsg", "isCheck", "checkValue", "rules"])
259
+ ], 4))), 128))
260
+ ], 10, le));
261
+ }
262
+ });
263
+ export {
264
+ me as _
265
+ };
266
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-CxVAWr6w.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.vue_vue_type_script_setup_true_lang-CxVAWr6w.js","sources":["../../../src/libs/Web/SelectCascade/Index.vue"],"sourcesContent":["<template>\n <div\n :id=\"elId\"\n :class=\"clsParent\"\n >\n <div\n v-for=\"(item, inx) in optData\"\n :key=\"`${_keyIndex}-${inx}`\"\n class=\"selectCascade-item\"\n :style=\"item.sty\"\n >\n <cl-form-validate\n :isShowMsg=\"isShowInMsg\"\n :isCheck=\"isCheckValidate\"\n :checkValue=\"item.selected\"\n :rules=\"validateRules\"\n >\n <cl-select\n :isClear=\"isClear\"\n :isSearch=\"isSearch\"\n :placeholder=\"item.placeholder\"\n :list=\"item.list\"\n :disabled=\"disabled\"\n v-model:value=\"item.selected\"\n :onOpenBefore=\"onCheckOpen\"\n @onChange=\"onChangeItem($event, inx)\"\n />\n </cl-form-validate>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { watch, onMounted, nextTick, reactive, ref, computed } from 'vue';\nimport type { PropType } from 'vue';\nimport CommonBase from '../../Common/base';\nimport CommonElement from '../../Common/Element/index';\nimport useLanguage from '../../Use/language';\nimport ClFormValidate from '../../Element/Form/Validate.vue';\nimport ClSelect from '../Select/Index.vue';\nimport './index.css';\n\ndefineOptions({ name: 'ClSelectCascade' });\n\nconst props = defineProps({\n id: String, // desc: 自定义元素ID\n value: [String, Number], // desc: 选中的值\n className: {\n type: String,\n default: '', // desc: 自定义CSS类名\n },\n disabled: {\n type: Boolean,\n default: false, // desc: 是否禁用\n },\n list: {\n type: Array as PropType<Record<string, any>[]>,\n default: () => [], // desc: 级联数据列表\n },\n placeholder: String, // desc: 各层级占位符,多个用 | 分隔\n isClear: {\n type: Boolean,\n default: false, // desc: 是否可清空\n },\n isSearch: {\n type: Boolean,\n default: false, // desc: 是否可搜索\n },\n parentKey: {\n type: String,\n default: 'parentId', // desc: 父级键名字段\n },\n topParentValue: {\n type: String,\n default: '0', // desc: 顶级父值\n },\n width: String, // desc: 各层级下拉宽度,多个用 | 分隔,需带单位(px/%)\n\n isCheckValidate: {\n type: Boolean,\n default: false, // desc: 是否启用校验\n },\n validateRules: {\n type: Array as PropType<Record<string, any>[]>,\n default: () => [{ r: 'required' }], // desc: 校验规则\n },\n isShowInMsg: {\n type: Boolean,\n default: true, // desc: 校验信息是否在消息中显示\n },\n});\n\nconst emit = defineEmits({\n 'update:value': (_value: string | number) => true, // desc: 值变化时触发\n onChange: (_value: string | number) => true, // desc: 选中变化时触发\n});\n\nconst { optPageLanguage, getPageLanguage } = useLanguage();\ngetPageLanguage('common');\n\nconst _keyIndex = `selectCascade-${CommonBase.getRandom(5)}`;\nconst elId = props.id; // || `selectCascade-${CommonBase.getRandom(8)}`\n\ninterface SelectCascadeItem {\n idx: number;\n pId: string;\n placeholder: string;\n list: Record<string, any>[];\n sty: Record<string, string>;\n selected: string;\n}\ninterface SelectCascadePageData {\n dataJson: Record<string, any>;\n dataGroup: Record<string, any[]>;\n parentIdsJson: Record<string, string[]>;\n}\n\nconst optBase = reactive({\n lastValue: props.value,\n isFirstDataFinish: false,\n});\nconst optData = ref<SelectCascadeItem[]>([]);\nconst _pageData: SelectCascadePageData = {\n dataJson: {},\n dataGroup: {},\n parentIdsJson: {},\n};\n\nconst optDefPlaceholder = computed(() => optPageLanguage.value.pleaseSelect);\n\nconst optPlaceholderList = computed(() => {\n const { placeholder } = props;\n const list: string[] = CommonBase.isNonEmptyString(placeholder) ? placeholder.split('|') : [];\n return list;\n});\nconst optWidthList = computed(() => {\n const { width } = props;\n const list: string[] = CommonBase.isNonEmptyString(width) ? width.split('|') : [];\n return list;\n});\nconst clsParent = computed(() => {\n let cls: Record<string, boolean> = { 'panel-selectCascade': true };\n cls = CommonBase.getJsonMerge(cls, CommonElement.getClassNameJson(props.className));\n return cls;\n});\n\nconst _emitChange = (value: string | number) => {\n if (value !== optBase.lastValue) {\n optBase.lastValue = value;\n emit('update:value', value);\n emit('onChange', value);\n }\n};\n\nconst _checkIsChildren = (id: string) => {\n return CommonBase.isExistJsonKey(_pageData.dataGroup, id);\n};\nconst _getDataGroup = (id: string) => {\n return _checkIsChildren(id) ? _pageData.dataGroup[id] : [];\n};\nconst _getDataInfo = (id: string): Record<string, any> | null => {\n return CommonBase.isExistJsonKey(_pageData.dataJson, id) ? _pageData.dataJson[id] : null;\n};\nconst _getTopParentValue = () => {\n return `top_${props.topParentValue}`;\n};\nconst _convertData = (list: Record<string, any>[]) => {\n const { parentKey, topParentValue } = props;\n const json: Record<string, any> = {};\n const group: Record<string, any[]> = {};\n if (!CommonBase.isEmpty(list)) {\n list.forEach((info: Record<string, any>) => {\n const newInfo = CommonBase.getJsonClone(info);\n if (\n !CommonBase.isExistJsonKey(newInfo, 'id') ||\n !CommonBase.isExistJsonKey(newInfo, parentKey)\n ) {\n return;\n }\n const id = newInfo.id.toString();\n const pId = newInfo[parentKey].toString();\n json[id] = newInfo;\n const pIdKey = pId === topParentValue.toString() ? _getTopParentValue() : pId;\n if (!CommonBase.isExistJsonKey(group, pIdKey)) {\n group[pIdKey] = [];\n }\n group[pIdKey].push(newInfo);\n });\n }\n _pageData.dataJson = json;\n _pageData.dataGroup = group;\n};\nconst _convertTreeItemData = (idx: number, pId: string): SelectCascadeItem => {\n const json: SelectCascadeItem = {\n idx,\n pId,\n placeholder: optDefPlaceholder.value,\n list: [],\n sty: {},\n selected: '',\n };\n if (!CommonBase.isEmpty(pId)) {\n const groupList = _getDataGroup(pId);\n json.list = CommonBase.getListClone(groupList);\n }\n const placeholderList = optPlaceholderList.value;\n const placeholderLen = placeholderList.length;\n if (placeholderLen > 0) {\n if (placeholderLen > idx) {\n json.placeholder = !CommonBase.isEmpty(placeholderList[idx])\n ? placeholderList[idx]\n : optDefPlaceholder.value;\n } else {\n if (placeholderLen === 1) {\n json.placeholder = placeholderList[0];\n }\n }\n }\n const widthList = optWidthList.value;\n if (widthList.length > idx) {\n if (!CommonBase.isEmpty(widthList[idx])) {\n json.sty.width = widthList[idx];\n json.sty.flex = 'none';\n }\n }\n return json;\n};\nconst _getRecursionParentIds = (id: string, visited?: string[]): string[] => {\n const { parentKey, topParentValue } = props;\n let arr: string[] = [];\n if (visited && visited.indexOf(id) > -1) {\n return [];\n }\n const visitList = visited ? visited.concat([id]) : [id];\n if (CommonBase.isExistJsonKey(_pageData.parentIdsJson, id)) {\n arr = _pageData.parentIdsJson[id];\n } else {\n const info = _getDataInfo(id);\n if (info !== undefined && info !== null) {\n const pId = info[parentKey].toString();\n if (pId !== topParentValue.toString()) {\n const pInfo = _getDataInfo(pId);\n if (pInfo !== undefined && pInfo !== null) {\n arr.push(pId);\n const tempIds: string[] = _getRecursionParentIds(pId, visitList);\n if (tempIds.length > 0) {\n arr = arr.concat(tempIds);\n }\n }\n }\n }\n _pageData.parentIdsJson[id] = arr;\n }\n return arr;\n};\n\nconst _initData = (value?: string | number) => {\n let newValue: string | number | undefined = CommonBase.isUndefined(value) ? props.value : value;\n if (\n newValue !== undefined &&\n newValue !== null &&\n !CommonBase.isEmpty(newValue) &&\n !CommonBase.isExistJsonKey(_pageData.dataJson, newValue.toString())\n ) {\n newValue = '';\n }\n const list: SelectCascadeItem[] = [];\n if (newValue === undefined || newValue === null || CommonBase.isEmpty(newValue)) {\n list.push(_convertTreeItemData(0, _getTopParentValue()));\n list.push(_convertTreeItemData(1, ''));\n } else {\n const valueStr = newValue.toString();\n const arrPIds = [..._getRecursionParentIds(valueStr)].reverse();\n const arrPIdLen = arrPIds.length;\n if (arrPIdLen > 0) {\n arrPIds.forEach((pId: string, i: number) => {\n const newPid = i === 0 ? _getTopParentValue() : pId;\n const infoItem = _convertTreeItemData(i, newPid);\n infoItem.selected = pId;\n list.push(infoItem);\n });\n const lastItem = _convertTreeItemData(arrPIdLen, arrPIds[arrPIdLen - 1]);\n lastItem.selected = valueStr;\n list.push(lastItem);\n } else {\n const firstItem = _convertTreeItemData(0, _getTopParentValue());\n firstItem.selected = valueStr;\n list.push(firstItem);\n }\n }\n optData.value = list;\n};\n\nconst _initMain = () => {\n _convertData(props.list);\n _initData();\n optBase.isFirstDataFinish = true;\n optBase.lastValue = props.value;\n};\n\nonMounted(() => {\n nextTick(() => {\n _initMain();\n });\n});\n\nwatch(\n () => props.value,\n newValue => {\n if (newValue !== optBase.lastValue) {\n if (optBase.isFirstDataFinish) {\n _initData();\n optBase.lastValue = newValue;\n }\n }\n },\n);\n\nwatch(\n () => props.list,\n newList => {\n if (!optBase.isFirstDataFinish) {\n optBase.isFirstDataFinish = true;\n return;\n }\n _pageData.parentIdsJson = {};\n _convertData(newList);\n\n const { value } = props;\n const selectValue =\n value !== undefined &&\n value !== null &&\n !CommonBase.isEmpty(value) &&\n CommonBase.isExistJsonKey(_pageData.dataJson, value.toString())\n ? value\n : '';\n _initData(selectValue);\n optBase.lastValue = selectValue;\n },\n);\n\nconst onCheckOpen = () => {\n return true;\n};\n\nconst onChangeItem = (value: string | number, inx: number) => {\n let outValue: string | number = '';\n if (CommonBase.isEmpty(value) && inx === 0) {\n _initData('');\n } else if (CommonBase.isEmpty(value)) {\n optData.value.splice(inx + 1);\n if (inx > 0) {\n const parentItem = optData.value[inx - 1];\n if (parentItem) {\n outValue = parentItem.selected;\n }\n }\n } else {\n const valueStr = value.toString();\n if (_checkIsChildren(valueStr)) {\n optData.value.splice(inx + 1);\n optData.value.push(_convertTreeItemData(inx + 1, valueStr));\n } else {\n outValue = value;\n optData.value.splice(inx + 1);\n }\n }\n _emitChange(outValue);\n};\n\nconst getValue = () => {\n return optBase.lastValue;\n};\nconst getValueData = () => {\n const value = optBase.lastValue;\n let show = '';\n if (value !== undefined && value !== null && !CommonBase.isEmpty(value)) {\n const v = value.toString();\n const ids = _getRecursionParentIds(v);\n const chain = ids.length > 0 ? ids.slice().reverse().concat([v]) : [v];\n const names: string[] = [];\n chain.forEach((id) => {\n const info = _pageData.dataJson[id];\n if (info !== undefined && info !== null && !CommonBase.isEmpty(info.name)) {\n names.push(info.name);\n }\n });\n show = names.join(' → ');\n }\n return {\n value,\n show: show || (value !== undefined && value !== null ? value.toString() : ''),\n };\n};\nconst setValue = (value: string | number) => {\n _initData(value);\n optBase.lastValue = value;\n};\n\nexport interface ClSelectCascadeExpose {\n getValue: () => string | number | undefined;\n getValueData: () => { value: string | number | undefined; show: string };\n setValue: (value: string | number) => void;\n}\n\ndefineExpose({\n getValue,\n getValueData,\n setValue,\n});\n</script>\n"],"names":["props","__props","emit","__emit","optPageLanguage","getPageLanguage","useLanguage","_keyIndex","CommonBase","elId","optBase","reactive","optData","ref","_pageData","optDefPlaceholder","computed","optPlaceholderList","placeholder","optWidthList","width","clsParent","cls","CommonElement","_emitChange","value","_checkIsChildren","id","_getDataGroup","_getDataInfo","_getTopParentValue","_convertData","list","parentKey","topParentValue","json","group","info","newInfo","pId","pIdKey","_convertTreeItemData","idx","groupList","placeholderList","placeholderLen","widthList","_getRecursionParentIds","visited","arr","visitList","pInfo","tempIds","_initData","newValue","valueStr","arrPIds","arrPIdLen","i","newPid","infoItem","lastItem","firstItem","_initMain","onMounted","nextTick","watch","newList","selectValue","onCheckOpen","onChangeItem","inx","outValue","parentItem","__expose","show","v","ids","chain","names","_createElementBlock","_unref","_openBlock","_Fragment","_renderList","item","_normalizeStyle","_createVNode","ClFormValidate","ClSelect","$event"],"mappings":"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"}
@@ -318,4 +318,4 @@ const Z = [
318
318
  export {
319
319
  re as _
320
320
  };
321
- //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-DgMvq-RQ.js.map
321
+ //# sourceMappingURL=Index.vue_vue_type_script_setup_true_lang-DFKjhT_C.js.map