vue-devui 1.0.0-alpha.6 → 1.0.0-beta.12

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 (344) hide show
  1. package/README.md +32 -35
  2. package/accordion/index.d.ts +7 -0
  3. package/accordion/index.es.js +508 -1
  4. package/accordion/index.umd.js +1 -1
  5. package/accordion/style.css +1 -1
  6. package/alert/index.d.ts +7 -0
  7. package/alert/index.es.js +178 -1
  8. package/alert/index.umd.js +1 -1
  9. package/alert/style.css +1 -1
  10. package/anchor/index.d.ts +7 -0
  11. package/anchor/index.es.js +263 -1
  12. package/anchor/index.umd.js +1 -1
  13. package/avatar/index.d.ts +7 -0
  14. package/avatar/index.es.js +301 -1
  15. package/avatar/index.umd.js +1 -1
  16. package/back-top/index.d.ts +7 -0
  17. package/back-top/index.es.js +128 -0
  18. package/back-top/index.umd.js +1 -0
  19. package/back-top/package.json +7 -0
  20. package/back-top/style.css +1 -0
  21. package/badge/index.d.ts +7 -0
  22. package/badge/index.es.js +95 -1
  23. package/badge/index.umd.js +1 -1
  24. package/breadcrumb/index.d.ts +7 -0
  25. package/breadcrumb/index.es.js +127 -1
  26. package/breadcrumb/index.umd.js +1 -1
  27. package/button/index.d.ts +7 -0
  28. package/button/index.es.js +392 -1
  29. package/button/index.umd.js +1 -1
  30. package/button/style.css +1 -1
  31. package/card/index.d.ts +7 -0
  32. package/card/index.es.js +61 -1
  33. package/card/index.umd.js +1 -1
  34. package/carousel/index.d.ts +7 -0
  35. package/carousel/index.es.js +329 -1
  36. package/carousel/index.umd.js +1 -1
  37. package/cascader/index.d.ts +7 -0
  38. package/cascader/index.es.js +1343 -1
  39. package/cascader/index.umd.js +1 -1
  40. package/cascader/style.css +1 -1
  41. package/checkbox/index.d.ts +7 -0
  42. package/checkbox/index.es.js +377 -1
  43. package/checkbox/index.umd.js +1 -1
  44. package/comment/index.d.ts +7 -0
  45. package/comment/index.es.js +85 -0
  46. package/comment/index.umd.js +1 -0
  47. package/comment/package.json +7 -0
  48. package/comment/style.css +1 -0
  49. package/countdown/index.d.ts +7 -0
  50. package/countdown/index.es.js +176 -0
  51. package/countdown/index.umd.js +1 -0
  52. package/countdown/package.json +7 -0
  53. package/countdown/style.css +1 -0
  54. package/date-picker/index.d.ts +7 -0
  55. package/date-picker/index.es.js +1172 -1
  56. package/date-picker/index.umd.js +1 -1
  57. package/date-picker/style.css +1 -1
  58. package/dragdrop/index.d.ts +7 -0
  59. package/dragdrop/index.es.js +32 -0
  60. package/dragdrop/index.umd.js +1 -0
  61. package/dragdrop/package.json +7 -0
  62. package/drawer/index.d.ts +7 -0
  63. package/drawer/index.es.js +287 -0
  64. package/drawer/index.umd.js +1 -0
  65. package/drawer/package.json +7 -0
  66. package/drawer/style.css +1 -0
  67. package/dropdown/index.d.ts +7 -0
  68. package/dropdown/index.es.js +535 -0
  69. package/dropdown/index.umd.js +1 -0
  70. package/dropdown/package.json +7 -0
  71. package/dropdown/style.css +1 -0
  72. package/editable-select/index.d.ts +7 -0
  73. package/editable-select/index.es.js +5857 -1
  74. package/editable-select/index.umd.js +27 -1
  75. package/editable-select/style.css +1 -1
  76. package/form/index.d.ts +7 -0
  77. package/form/index.es.js +2244 -0
  78. package/form/index.umd.js +1 -0
  79. package/form/package.json +7 -0
  80. package/form/style.css +1 -0
  81. package/fullscreen/index.d.ts +7 -0
  82. package/fullscreen/index.es.js +163 -1
  83. package/fullscreen/index.umd.js +1 -1
  84. package/gantt/index.d.ts +7 -0
  85. package/gantt/index.es.js +535 -0
  86. package/gantt/index.umd.js +1 -0
  87. package/gantt/package.json +7 -0
  88. package/gantt/style.css +1 -0
  89. package/grid/index.d.ts +7 -0
  90. package/grid/index.es.js +269 -0
  91. package/grid/index.umd.js +1 -0
  92. package/grid/package.json +7 -0
  93. package/grid/style.css +1 -0
  94. package/icon/index.d.ts +7 -0
  95. package/icon/index.es.js +75 -1
  96. package/icon/index.umd.js +1 -1
  97. package/image-preview/index.d.ts +7 -0
  98. package/image-preview/index.es.js +498 -1
  99. package/image-preview/index.umd.js +1 -1
  100. package/image-preview/style.css +1 -1
  101. package/index.d.ts +7 -0
  102. package/input/index.d.ts +7 -0
  103. package/input/index.es.js +190 -1
  104. package/input/index.umd.js +1 -1
  105. package/input-icon/index.d.ts +7 -0
  106. package/input-icon/index.es.js +332 -0
  107. package/input-icon/index.umd.js +1 -0
  108. package/input-icon/package.json +7 -0
  109. package/input-icon/style.css +1 -0
  110. package/input-number/index.d.ts +7 -0
  111. package/input-number/index.es.js +240 -1
  112. package/input-number/index.umd.js +1 -1
  113. package/layout/index.d.ts +7 -0
  114. package/layout/index.es.js +100 -0
  115. package/layout/index.umd.js +1 -0
  116. package/layout/package.json +7 -0
  117. package/layout/style.css +1 -0
  118. package/loading/index.d.ts +7 -0
  119. package/loading/index.es.js +256 -1
  120. package/loading/index.umd.js +1 -1
  121. package/modal/index.d.ts +7 -0
  122. package/modal/index.es.js +1225 -1
  123. package/modal/index.umd.js +1 -1
  124. package/modal/style.css +1 -1
  125. package/nav-sprite/index.d.ts +7 -0
  126. package/nav-sprite/index.es.js +742 -0
  127. package/nav-sprite/index.umd.js +1 -0
  128. package/nav-sprite/package.json +7 -0
  129. package/nuxt/components/Accordion.js +3 -0
  130. package/nuxt/components/Alert.js +3 -0
  131. package/nuxt/components/Anchor.js +3 -0
  132. package/nuxt/components/Aside.js +3 -0
  133. package/nuxt/components/Avatar.js +3 -0
  134. package/nuxt/components/BackTop.js +3 -0
  135. package/nuxt/components/Badge.js +3 -0
  136. package/nuxt/components/Breadcrumb.js +3 -0
  137. package/nuxt/components/Button.js +3 -0
  138. package/nuxt/components/Card.js +3 -0
  139. package/nuxt/components/Carousel.js +3 -0
  140. package/nuxt/components/Cascader.js +3 -0
  141. package/nuxt/components/Checkbox.js +3 -0
  142. package/nuxt/components/Col.js +3 -0
  143. package/nuxt/components/Column.js +3 -0
  144. package/nuxt/components/Comment.js +3 -0
  145. package/nuxt/components/Content.js +3 -0
  146. package/nuxt/components/Countdown.js +3 -0
  147. package/nuxt/components/DatePicker.js +3 -0
  148. package/nuxt/components/Drawer.js +3 -0
  149. package/nuxt/components/Dropdown.js +3 -0
  150. package/nuxt/components/EditableSelect.js +3 -0
  151. package/nuxt/components/FixedOverlay.js +3 -0
  152. package/nuxt/components/FlexibleOverlay.js +3 -0
  153. package/nuxt/components/Footer.js +3 -0
  154. package/nuxt/components/Form.js +3 -0
  155. package/nuxt/components/FormControl.js +3 -0
  156. package/nuxt/components/FormItem.js +3 -0
  157. package/nuxt/components/FormLabel.js +3 -0
  158. package/nuxt/components/FormOperation.js +3 -0
  159. package/nuxt/components/Fullscreen.js +3 -0
  160. package/nuxt/components/Gantt.js +3 -0
  161. package/nuxt/components/Header.js +3 -0
  162. package/nuxt/components/Icon.js +2 -0
  163. package/nuxt/components/ImagePreviewService.js +3 -0
  164. package/nuxt/components/Input.js +3 -0
  165. package/nuxt/components/InputIcon.js +3 -0
  166. package/nuxt/components/InputNumber.js +3 -0
  167. package/nuxt/components/Layout.js +3 -0
  168. package/nuxt/components/Loading.js +3 -0
  169. package/nuxt/components/LoadingService.js +3 -0
  170. package/nuxt/components/Modal.js +3 -0
  171. package/nuxt/components/NavSprite.js +2 -0
  172. package/nuxt/components/Pagination.js +3 -0
  173. package/nuxt/components/Panel.js +3 -0
  174. package/nuxt/components/Popover.js +3 -0
  175. package/nuxt/components/Progress.js +3 -0
  176. package/nuxt/components/QuadrantDiagram.js +3 -0
  177. package/nuxt/components/Radio.js +3 -0
  178. package/nuxt/components/RadioGroup.js +3 -0
  179. package/nuxt/components/Rate.js +3 -0
  180. package/nuxt/components/ReadTip.js +3 -0
  181. package/nuxt/components/Result.js +3 -0
  182. package/nuxt/components/Row.js +3 -0
  183. package/nuxt/components/Search.js +3 -0
  184. package/nuxt/components/Select.js +3 -0
  185. package/nuxt/components/Skeleton.js +3 -0
  186. package/nuxt/components/SkeletonItem.js +3 -0
  187. package/nuxt/components/Slider.js +3 -0
  188. package/nuxt/components/Splitter.js +3 -0
  189. package/nuxt/components/Statistic.js +3 -0
  190. package/nuxt/components/Status.js +3 -0
  191. package/nuxt/components/StepsGuide.js +3 -0
  192. package/nuxt/components/StickSlider.js +3 -0
  193. package/nuxt/components/Sticky.js +2 -0
  194. package/nuxt/components/Switch.js +3 -0
  195. package/nuxt/components/Table.js +3 -0
  196. package/nuxt/components/Tabs.js +3 -0
  197. package/nuxt/components/Tag.js +3 -0
  198. package/nuxt/components/TagInput.js +3 -0
  199. package/nuxt/components/Textarea.js +3 -0
  200. package/nuxt/components/TimeAxis.js +3 -0
  201. package/nuxt/components/TimeAxisItem.js +3 -0
  202. package/nuxt/components/TimePicker.js +3 -0
  203. package/nuxt/components/Toast.js +3 -0
  204. package/nuxt/components/ToastService.js +3 -0
  205. package/nuxt/components/Tooltip.js +3 -0
  206. package/nuxt/components/Transfer.js +3 -0
  207. package/nuxt/components/Tree.js +3 -0
  208. package/nuxt/components/TreeSelect.js +3 -0
  209. package/nuxt/components/Upload.js +3 -0
  210. package/nuxt/components/buttonProps.js +3 -0
  211. package/nuxt/index.js +13 -0
  212. package/overlay/index.d.ts +7 -0
  213. package/overlay/index.es.js +368 -1
  214. package/overlay/index.umd.js +1 -1
  215. package/overlay/style.css +1 -1
  216. package/package.json +6 -47
  217. package/pagination/index.d.ts +7 -0
  218. package/pagination/index.es.js +642 -1
  219. package/pagination/index.umd.js +1 -1
  220. package/panel/index.d.ts +7 -0
  221. package/panel/index.es.js +205 -1
  222. package/panel/index.umd.js +1 -1
  223. package/panel/style.css +1 -1
  224. package/popover/index.d.ts +7 -0
  225. package/popover/index.es.js +236 -1
  226. package/popover/index.umd.js +1 -1
  227. package/progress/index.d.ts +7 -0
  228. package/progress/index.es.js +153 -1
  229. package/progress/index.umd.js +3 -1
  230. package/quadrant-diagram/index.d.ts +7 -0
  231. package/quadrant-diagram/index.es.js +489 -1
  232. package/quadrant-diagram/index.umd.js +1 -1
  233. package/radio/index.d.ts +7 -0
  234. package/radio/index.es.js +225 -1
  235. package/radio/index.umd.js +1 -1
  236. package/rate/index.d.ts +7 -0
  237. package/rate/index.es.js +220 -1
  238. package/rate/index.umd.js +1 -1
  239. package/read-tip/index.d.ts +7 -0
  240. package/read-tip/index.es.js +258 -0
  241. package/read-tip/index.umd.js +1 -0
  242. package/read-tip/package.json +7 -0
  243. package/read-tip/style.css +1 -0
  244. package/result/index.d.ts +7 -0
  245. package/result/index.es.js +119 -0
  246. package/result/index.umd.js +1 -0
  247. package/result/package.json +7 -0
  248. package/result/style.css +1 -0
  249. package/ripple/index.d.ts +7 -0
  250. package/ripple/index.es.js +181 -1
  251. package/ripple/index.umd.js +1 -1
  252. package/search/index.d.ts +7 -0
  253. package/search/index.es.js +543 -1
  254. package/search/index.umd.js +1 -1
  255. package/select/index.d.ts +7 -0
  256. package/select/index.es.js +706 -1
  257. package/select/index.umd.js +1 -1
  258. package/skeleton/index.d.ts +7 -0
  259. package/skeleton/index.es.js +297 -1
  260. package/skeleton/index.umd.js +1 -1
  261. package/skeleton/style.css +1 -1
  262. package/slider/index.d.ts +7 -0
  263. package/slider/index.es.js +199 -1
  264. package/slider/index.umd.js +1 -1
  265. package/slider/style.css +1 -1
  266. package/splitter/index.d.ts +7 -0
  267. package/splitter/index.es.js +636 -1
  268. package/splitter/index.umd.js +1 -1
  269. package/statistic/index.d.ts +7 -0
  270. package/statistic/index.es.js +280 -0
  271. package/statistic/index.umd.js +1 -0
  272. package/statistic/package.json +7 -0
  273. package/statistic/style.css +1 -0
  274. package/status/index.d.ts +7 -0
  275. package/status/index.es.js +42 -1
  276. package/status/index.umd.js +1 -1
  277. package/steps-guide/index.d.ts +7 -0
  278. package/steps-guide/index.es.js +239 -1
  279. package/steps-guide/index.umd.js +1 -1
  280. package/steps-guide/style.css +1 -1
  281. package/sticky/index.d.ts +7 -0
  282. package/sticky/index.es.js +197 -1
  283. package/sticky/index.umd.js +1 -1
  284. package/style.css +1 -1
  285. package/switch/index.d.ts +7 -0
  286. package/switch/index.es.js +100 -1
  287. package/switch/index.umd.js +1 -1
  288. package/switch/style.css +1 -1
  289. package/table/index.d.ts +7 -0
  290. package/table/index.es.js +1836 -1
  291. package/table/index.umd.js +1 -1
  292. package/table/style.css +1 -1
  293. package/tabs/index.d.ts +7 -0
  294. package/tabs/index.es.js +195 -1
  295. package/tabs/index.umd.js +1 -1
  296. package/tabs/style.css +1 -1
  297. package/tag/index.d.ts +7 -0
  298. package/tag/index.es.js +131 -0
  299. package/tag/index.umd.js +1 -0
  300. package/tag/package.json +7 -0
  301. package/tag/style.css +1 -0
  302. package/tag-input/index.d.ts +7 -0
  303. package/tag-input/index.es.js +329 -1
  304. package/tag-input/index.umd.js +1 -1
  305. package/textarea/index.d.ts +7 -0
  306. package/textarea/index.es.js +132 -0
  307. package/textarea/index.umd.js +1 -0
  308. package/textarea/package.json +7 -0
  309. package/textarea/style.css +1 -0
  310. package/time-axis/index.d.ts +7 -0
  311. package/time-axis/index.es.js +299 -0
  312. package/time-axis/index.umd.js +1 -0
  313. package/time-axis/package.json +7 -0
  314. package/time-axis/style.css +1 -0
  315. package/time-picker/index.d.ts +7 -0
  316. package/time-picker/index.es.js +1260 -1
  317. package/time-picker/index.umd.js +1 -1
  318. package/time-picker/style.css +1 -1
  319. package/toast/index.d.ts +7 -0
  320. package/toast/index.es.js +2060 -1
  321. package/toast/index.umd.js +1 -1
  322. package/toast/style.css +1 -1
  323. package/tooltip/index.d.ts +7 -0
  324. package/tooltip/index.es.js +171 -1
  325. package/tooltip/index.umd.js +1 -1
  326. package/transfer/index.d.ts +7 -0
  327. package/transfer/index.es.js +1725 -1
  328. package/transfer/index.umd.js +1 -1
  329. package/transfer/style.css +1 -1
  330. package/tree/index.d.ts +7 -0
  331. package/tree/index.es.js +907 -1
  332. package/tree/index.umd.js +1 -1
  333. package/tree/style.css +1 -1
  334. package/tree-select/index.d.ts +7 -0
  335. package/tree-select/index.es.js +528 -0
  336. package/tree-select/index.umd.js +1 -0
  337. package/tree-select/package.json +7 -0
  338. package/tree-select/style.css +1 -0
  339. package/upload/index.d.ts +7 -0
  340. package/upload/index.es.js +2834 -1
  341. package/upload/index.umd.js +1 -1
  342. package/upload/style.css +1 -1
  343. package/vue-devui.es.js +27777 -1
  344. package/vue-devui.umd.js +29 -1
@@ -1 +1,239 @@
1
- import{computed as e,ref as t,reactive as s,nextTick as i,defineComponent as n,onMounted as l,createVNode as o,Teleport as c}from"vue";var u=n({name:"DStepsGuide",props:{steps:Array,showClose:{type:Boolean,default:!0},showDots:{type:Boolean,default:!0}},emits:[],setup(n,o){const c=e((()=>n.steps.length-1)),u=t(0),{currentStep:d,stepsRef:p,guidePosition:a,guideClassList:r,updateGuidePosition:v}=function(i,n){const l=e((()=>{const e=i[n.value];return e.position=e.position||"top",e})),o=["d-steps-guide"],c=t(null),u=s({left:"",top:"",zIndex:1100});return{currentStep:l,stepsRef:c,guidePosition:u,guideClassList:o,updateGuidePosition:()=>{const e=window.pageYOffset-document.documentElement.clientTop,t=window.pageXOffset-document.documentElement.clientLeft,s=l.value.position;let i,n;if("string"!=typeof s){const{top:e=0,left:t=0,type:l="top"}=s;o.splice(1,1,l),i=t,n=e}else{o.splice(1,1,s);const u=c.value,d=l.value.target||l.value.trigger,p=document.querySelector(d),a=p.getBoundingClientRect();i=a.left+p.clientWidth/2-u.clientWidth/2+t,n=a.top+p.clientHeight/2-u.clientHeight/2+e;const r=s.split("-");switch(r[0]){case"top":n+=-u.clientHeight/2-p.clientHeight;break;case"bottom":n+=u.clientHeight/2+p.clientHeight;break;case"left":n+=u.clientHeight/2-p.clientHeight,i+=-u.clientWidth/2-p.clientWidth/2;break;case"right":n+=u.clientHeight/2-p.clientHeight,i+=u.clientWidth/2+p.clientWidth/2}switch(r[1]){case"left":i+=u.clientWidth/2-p.clientWidth/2;break;case"right":i+=-u.clientWidth/2+p.clientWidth/2}}u.left=i+"px",u.top=n+"px"}}}(n.steps,u),{showSteps:g,closeSteps:h,setCurrentIndex:f}=function(e,s,n){const l=t(!0);return{showSteps:l,closeSteps:()=>{l.value=!1},setCurrentIndex:t=>{(t>e.value||t<0)&&(t=0),s.value=t,l.value?n():(l.value=!0,i((()=>{n()})))}}}(c,u,v);return l((()=>{v()})),{stepsCount:c,stepIndex:u,showSteps:g,guidePosition:a,guideClassList:r,stepsRef:p,currentStep:d,setCurrentIndex:f,closeSteps:h}},render(e){const{showSteps:t,guidePosition:s,guideClassList:i,currentStep:n,stepIndex:l,stepsCount:u,setCurrentIndex:d,closeSteps:p,showClose:a,showDots:r}=e;return t?o(c,{to:"body"},{default:()=>[o("div",{style:s,class:i,ref:"stepsRef"},[o("div",{class:"devui-shining-dot"},null),o("div",{class:"devui-shining-plus"},null),o("div",{class:"devui-arrow"},null),o("div",{class:"devui-guide-container"},[o("p",{class:"devui-title"},[n.title]),a?o("div",{class:"icon icon-close",onClick:p},null):null,o("div",{class:"devui-content"},[n.content]),o("div",{class:"devui-ctrl"},[r?o("div",{class:"devui-dots"},[e.steps.map(((e,t)=>o("em",{class:["icon icon-dot-status",n===e?"devui-active":""],key:t},null)))]):null,o("div",{class:"devui-guide-btn"},[l>0?o("div",{class:"devui-prev-step",onClick:()=>d(--e.stepIndex)},["上一步"]):null,l===u?o("div",{onClick:p},["我知道啦"]):o("div",{class:"devui-next-step",onClick:()=>{d(++e.stepIndex)}},["我知道啦,继续"])])])])])]}):null}});u.install=function(e){e.component(u.name,u)};var d={title:"StepsGuide 操作指引",category:"导航",status:"50%",install(e){e.use(u)}};export{u as StepsGuide,d as default};
1
+ import { reactive, ref, nextTick, computed, defineComponent, onMounted, createVNode, Teleport } from "vue";
2
+ var stepsGuide = "";
3
+ const stepsGuideProps = {
4
+ steps: Array,
5
+ stepIndex: {
6
+ type: Number,
7
+ default: void 0
8
+ },
9
+ showClose: {
10
+ type: Boolean,
11
+ default: true
12
+ },
13
+ showDots: {
14
+ type: Boolean,
15
+ default: true
16
+ },
17
+ scrollToTargetSwitch: {
18
+ type: Boolean,
19
+ default: true
20
+ },
21
+ zIndex: {
22
+ type: Number,
23
+ default: 1100
24
+ },
25
+ stepChange: {
26
+ type: Function,
27
+ default() {
28
+ return true;
29
+ }
30
+ }
31
+ };
32
+ function useStepsGuidePosition(props, currentStep) {
33
+ const guideClassList = reactive(["devui-steps-guide"]);
34
+ const stepsRef = ref(null);
35
+ const guidePosition = reactive({
36
+ left: "",
37
+ top: "",
38
+ zIndex: props.zIndex
39
+ });
40
+ const updateGuidePosition = () => {
41
+ if (!currentStep.value || !stepsRef.value)
42
+ return;
43
+ const baseTop = window.pageYOffset - document.documentElement.clientTop;
44
+ const baseLeft = window.pageXOffset - document.documentElement.clientLeft;
45
+ const currentStepPosition = currentStep.value.position;
46
+ const stepGuideElement = stepsRef.value;
47
+ let _left, _top;
48
+ if (typeof currentStepPosition !== "string") {
49
+ const { top = 0, left = 0, type = "top" } = currentStepPosition;
50
+ guideClassList.splice(1, 1, type);
51
+ _left = left;
52
+ _top = top;
53
+ } else {
54
+ guideClassList.splice(1, 1, currentStepPosition);
55
+ const triggerSelector = currentStep.value.target || currentStep.value.trigger;
56
+ const triggerElement = document.querySelector(triggerSelector);
57
+ if (!triggerElement) {
58
+ console.warn(`${triggerSelector} \u4E0D\u5B58\u5728!`);
59
+ return false;
60
+ }
61
+ const targetRect = triggerElement.getBoundingClientRect();
62
+ _left = targetRect.left + triggerElement.clientWidth / 2 - stepGuideElement.clientWidth / 2 + baseLeft;
63
+ _top = targetRect.top + triggerElement.clientHeight / 2 - stepGuideElement.clientHeight / 2 + baseTop;
64
+ const positionTypes = currentStepPosition.split("-");
65
+ switch (positionTypes[0]) {
66
+ case "top":
67
+ _top += -stepGuideElement.clientHeight / 2 - triggerElement.clientHeight;
68
+ break;
69
+ case "bottom":
70
+ _top += stepGuideElement.clientHeight / 2 + triggerElement.clientHeight;
71
+ break;
72
+ case "left":
73
+ _top += stepGuideElement.clientHeight / 2 - triggerElement.clientHeight;
74
+ _left += -stepGuideElement.clientWidth / 2 - triggerElement.clientWidth / 2;
75
+ break;
76
+ case "right":
77
+ _top += stepGuideElement.clientHeight / 2 - triggerElement.clientHeight;
78
+ _left += stepGuideElement.clientWidth / 2 + triggerElement.clientWidth / 2;
79
+ break;
80
+ }
81
+ switch (positionTypes[1]) {
82
+ case "left":
83
+ _left += stepGuideElement.clientWidth / 2 - triggerElement.clientWidth / 2;
84
+ break;
85
+ case "right":
86
+ _left += -stepGuideElement.clientWidth / 2 + triggerElement.clientWidth / 2;
87
+ break;
88
+ }
89
+ }
90
+ guidePosition.left = _left + "px";
91
+ guidePosition.top = _top + "px";
92
+ if (props.scrollToTargetSwitch && typeof stepGuideElement.scrollIntoView === "function") {
93
+ nextTick(() => {
94
+ stepGuideElement.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "nearest" });
95
+ });
96
+ }
97
+ };
98
+ return {
99
+ stepsRef,
100
+ guidePosition,
101
+ guideClassList,
102
+ updateGuidePosition
103
+ };
104
+ }
105
+ function useStepsGuideCtrl(props, ctx, updateGuidePosition, stepIndex) {
106
+ const stepsCount = computed(() => props.steps.length);
107
+ const closeGuide = () => {
108
+ const _index = stepIndex.value;
109
+ stepIndex.value = -1;
110
+ nextTick(() => {
111
+ ctx.emit("guide-close", _index);
112
+ });
113
+ };
114
+ const setCurrentIndex = (index2) => {
115
+ if (index2 !== -1 && props.stepChange()) {
116
+ if (index2 > -1 && index2 < stepsCount.value) {
117
+ stepIndex.value = index2;
118
+ nextTick(() => {
119
+ updateGuidePosition();
120
+ });
121
+ } else {
122
+ console.error(`stepIndex is not within the value range`);
123
+ }
124
+ }
125
+ if (index2 === -1)
126
+ closeGuide();
127
+ };
128
+ return {
129
+ stepsCount,
130
+ closeGuide,
131
+ setCurrentIndex
132
+ };
133
+ }
134
+ var StepsGuide = defineComponent({
135
+ name: "DStepsGuide",
136
+ props: stepsGuideProps,
137
+ emits: ["guide-close", "update:stepIndex"],
138
+ setup(props, ctx) {
139
+ var _a;
140
+ const stepIndexData = ref((_a = props.stepIndex) != null ? _a : 0);
141
+ const stepIndex = computed({
142
+ set: (val) => {
143
+ if (props.stepIndex != null) {
144
+ ctx.emit("update:stepIndex", val);
145
+ }
146
+ stepIndexData.value = val;
147
+ },
148
+ get: () => stepIndexData.value
149
+ });
150
+ const currentStep = computed(() => {
151
+ const _step = props.steps[stepIndex.value];
152
+ if (_step)
153
+ _step.position = _step.position || "top";
154
+ return _step;
155
+ });
156
+ const {
157
+ stepsRef,
158
+ guidePosition,
159
+ guideClassList,
160
+ updateGuidePosition
161
+ } = useStepsGuidePosition(props, currentStep);
162
+ const {
163
+ stepsCount,
164
+ closeGuide,
165
+ setCurrentIndex
166
+ } = useStepsGuideCtrl(props, ctx, updateGuidePosition, stepIndex);
167
+ onMounted(() => {
168
+ updateGuidePosition();
169
+ });
170
+ ctx.expose({
171
+ closeGuide,
172
+ setCurrentIndex
173
+ });
174
+ return () => stepIndex.value > -1 && stepsCount.value > 0 ? createVNode(Teleport, {
175
+ "to": "body"
176
+ }, {
177
+ default: () => [createVNode("div", {
178
+ "style": guidePosition,
179
+ "class": guideClassList,
180
+ "ref": stepsRef
181
+ }, [createVNode("div", {
182
+ "class": "devui-shining-dot"
183
+ }, null), createVNode("div", {
184
+ "class": "devui-shining-plus"
185
+ }, null), createVNode("div", {
186
+ "class": "devui-arrow"
187
+ }, null), createVNode("div", {
188
+ "class": "devui-guide-container"
189
+ }, [createVNode("p", {
190
+ "class": "devui-title"
191
+ }, [currentStep.value.title]), props.showClose ? createVNode("div", {
192
+ "class": "icon icon-close",
193
+ "onClick": closeGuide
194
+ }, null) : null, createVNode("div", {
195
+ "class": "devui-content"
196
+ }, [currentStep.value.content]), createVNode("div", {
197
+ "class": "devui-ctrl"
198
+ }, [props.showDots ? createVNode("div", {
199
+ "class": "devui-dots"
200
+ }, [props.steps.map((step, index2) => {
201
+ return createVNode("em", {
202
+ "class": ["icon icon-dot-status", currentStep.value === step ? "devui-active" : ""],
203
+ "key": index2
204
+ }, null);
205
+ })]) : null, createVNode("div", {
206
+ "class": "devui-guide-btn"
207
+ }, [stepIndex.value > 0 ? createVNode("div", {
208
+ "class": "devui-prev-step",
209
+ "onClick": () => setCurrentIndex(stepIndex.value - 1)
210
+ }, ["\u4E0A\u4E00\u6B65"]) : null, stepIndex.value === stepsCount.value - 1 ? createVNode("div", {
211
+ "onClick": closeGuide
212
+ }, ["\u6211\u77E5\u9053\u5566"]) : createVNode("div", {
213
+ "class": "devui-next-step",
214
+ "onClick": () => {
215
+ setCurrentIndex(stepIndex.value + 1);
216
+ }
217
+ }, ["\u6211\u77E5\u9053\u5566,\u7EE7\u7EED"])])])])])]
218
+ }) : null;
219
+ }
220
+ });
221
+ var StepsGuideDirective = {
222
+ mounted(el, binding, vNode) {
223
+ },
224
+ updated(el, binding) {
225
+ }
226
+ };
227
+ StepsGuide.install = function(app) {
228
+ app.component(StepsGuide.name, StepsGuide);
229
+ };
230
+ var index = {
231
+ title: "StepsGuide \u64CD\u4F5C\u6307\u5F15",
232
+ category: "\u5BFC\u822A",
233
+ status: "80%",
234
+ install(app) {
235
+ app.use(StepsGuide);
236
+ app.directive("StepsGuide", StepsGuideDirective);
237
+ }
238
+ };
239
+ export { StepsGuide, index as default };
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).index={},e.Vue)}(this,(function(e,t){"use strict";const i={steps:Array,showClose:{type:Boolean,default:!0},showDots:{type:Boolean,default:!0}};var s=t.defineComponent({name:"DStepsGuide",props:i,emits:[],setup(e,i){const s=t.computed((()=>e.steps.length-1)),n=t.ref(0),{currentStep:o,stepsRef:l,guidePosition:c,guideClassList:d,updateGuidePosition:u}=function(e,i){const s=t.computed((()=>{const t=e[i.value];return t.position=t.position||"top",t})),n=["d-steps-guide"],o=t.ref(null),l=t.reactive({left:"",top:"",zIndex:1100});return{currentStep:s,stepsRef:o,guidePosition:l,guideClassList:n,updateGuidePosition:()=>{const e=window.pageYOffset-document.documentElement.clientTop,t=window.pageXOffset-document.documentElement.clientLeft,i=s.value.position;let c,d;if("string"!=typeof i){const{top:e=0,left:t=0,type:s="top"}=i;n.splice(1,1,s),c=t,d=e}else{n.splice(1,1,i);const l=o.value,u=s.value.target||s.value.trigger,a=document.querySelector(u),r=a.getBoundingClientRect();c=r.left+a.clientWidth/2-l.clientWidth/2+t,d=r.top+a.clientHeight/2-l.clientHeight/2+e;const p=i.split("-");switch(p[0]){case"top":d+=-l.clientHeight/2-a.clientHeight;break;case"bottom":d+=l.clientHeight/2+a.clientHeight;break;case"left":d+=l.clientHeight/2-a.clientHeight,c+=-l.clientWidth/2-a.clientWidth/2;break;case"right":d+=l.clientHeight/2-a.clientHeight,c+=l.clientWidth/2+a.clientWidth/2}switch(p[1]){case"left":c+=l.clientWidth/2-a.clientWidth/2;break;case"right":c+=-l.clientWidth/2+a.clientWidth/2}}l.left=c+"px",l.top=d+"px"}}}(e.steps,n),{showSteps:a,closeSteps:r,setCurrentIndex:p}=function(e,i,s){const n=t.ref(!0);return{showSteps:n,closeSteps:()=>{n.value=!1},setCurrentIndex:o=>{(o>e.value||o<0)&&(o=0),i.value=o,n.value?s():(n.value=!0,t.nextTick((()=>{s()})))}}}(s,n,u);return t.onMounted((()=>{u()})),{stepsCount:s,stepIndex:n,showSteps:a,guidePosition:c,guideClassList:d,stepsRef:l,currentStep:o,setCurrentIndex:p,closeSteps:r}},render(e){const{showSteps:i,guidePosition:s,guideClassList:n,currentStep:o,stepIndex:l,stepsCount:c,setCurrentIndex:d,closeSteps:u,showClose:a,showDots:r}=e;return i?t.createVNode(t.Teleport,{to:"body"},{default:()=>[t.createVNode("div",{style:s,class:n,ref:"stepsRef"},[t.createVNode("div",{class:"devui-shining-dot"},null),t.createVNode("div",{class:"devui-shining-plus"},null),t.createVNode("div",{class:"devui-arrow"},null),t.createVNode("div",{class:"devui-guide-container"},[t.createVNode("p",{class:"devui-title"},[o.title]),a?t.createVNode("div",{class:"icon icon-close",onClick:u},null):null,t.createVNode("div",{class:"devui-content"},[o.content]),t.createVNode("div",{class:"devui-ctrl"},[r?t.createVNode("div",{class:"devui-dots"},[e.steps.map(((e,i)=>t.createVNode("em",{class:["icon icon-dot-status",o===e?"devui-active":""],key:i},null)))]):null,t.createVNode("div",{class:"devui-guide-btn"},[l>0?t.createVNode("div",{class:"devui-prev-step",onClick:()=>d(--e.stepIndex)},["上一步"]):null,l===c?t.createVNode("div",{onClick:u},["我知道啦"]):t.createVNode("div",{class:"devui-next-step",onClick:()=>{d(++e.stepIndex)}},["我知道啦,继续"])])])])])]}):null}});s.install=function(e){e.component(s.name,s)};var n={title:"StepsGuide 操作指引",category:"导航",status:"50%",install(e){e.use(s)}};e.StepsGuide=s,e.default=n,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"}));
1
+ (function(a,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(a=typeof globalThis!="undefined"?globalThis:a||self,e(a.index={},a.Vue))})(this,function(a,e){"use strict";var x="";const y={steps:Array,stepIndex:{type:Number,default:void 0},showClose:{type:Boolean,default:!0},showDots:{type:Boolean,default:!0},scrollToTargetSwitch:{type:Boolean,default:!0},zIndex:{type:Number,default:1100},stepChange:{type:Function,default(){return!0}}};function b(i,o){const r=e.reactive(["devui-steps-guide"]),n=e.ref(null),l=e.reactive({left:"",top:"",zIndex:i.zIndex});return{stepsRef:n,guidePosition:l,guideClassList:r,updateGuidePosition:()=>{if(!o.value||!n.value)return;const m=window.pageYOffset-document.documentElement.clientTop,c=window.pageXOffset-document.documentElement.clientLeft,p=o.value.position,s=n.value;let d,u;if(typeof p!="string"){const{top:f=0,left:t=0,type:g="top"}=p;r.splice(1,1,g),d=t,u=f}else{r.splice(1,1,p);const f=o.value.target||o.value.trigger,t=document.querySelector(f);if(!t)return console.warn(`${f} \u4E0D\u5B58\u5728!`),!1;const g=t.getBoundingClientRect();d=g.left+t.clientWidth/2-s.clientWidth/2+c,u=g.top+t.clientHeight/2-s.clientHeight/2+m;const C=p.split("-");switch(C[0]){case"top":u+=-s.clientHeight/2-t.clientHeight;break;case"bottom":u+=s.clientHeight/2+t.clientHeight;break;case"left":u+=s.clientHeight/2-t.clientHeight,d+=-s.clientWidth/2-t.clientWidth/2;break;case"right":u+=s.clientHeight/2-t.clientHeight,d+=s.clientWidth/2+t.clientWidth/2;break}switch(C[1]){case"left":d+=s.clientWidth/2-t.clientWidth/2;break;case"right":d+=-s.clientWidth/2+t.clientWidth/2;break}}l.left=d+"px",l.top=u+"px",i.scrollToTargetSwitch&&typeof s.scrollIntoView=="function"&&e.nextTick(()=>{s.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})})}}}function N(i,o,r,n){const l=e.computed(()=>i.steps.length),v=()=>{const c=n.value;n.value=-1,e.nextTick(()=>{o.emit("guide-close",c)})};return{stepsCount:l,closeGuide:v,setCurrentIndex:c=>{c!==-1&&i.stepChange()&&(c>-1&&c<l.value?(n.value=c,e.nextTick(()=>{r()})):console.error("stepIndex is not within the value range")),c===-1&&v()}}}var h=e.defineComponent({name:"DStepsGuide",props:y,emits:["guide-close","update:stepIndex"],setup(i,o){var f;const r=e.ref((f=i.stepIndex)!=null?f:0),n=e.computed({set:t=>{i.stepIndex!=null&&o.emit("update:stepIndex",t),r.value=t},get:()=>r.value}),l=e.computed(()=>{const t=i.steps[n.value];return t&&(t.position=t.position||"top"),t}),{stepsRef:v,guidePosition:m,guideClassList:c,updateGuidePosition:p}=b(i,l),{stepsCount:s,closeGuide:d,setCurrentIndex:u}=N(i,o,p,n);return e.onMounted(()=>{p()}),o.expose({closeGuide:d,setCurrentIndex:u}),()=>n.value>-1&&s.value>0?e.createVNode(e.Teleport,{to:"body"},{default:()=>[e.createVNode("div",{style:m,class:c,ref:v},[e.createVNode("div",{class:"devui-shining-dot"},null),e.createVNode("div",{class:"devui-shining-plus"},null),e.createVNode("div",{class:"devui-arrow"},null),e.createVNode("div",{class:"devui-guide-container"},[e.createVNode("p",{class:"devui-title"},[l.value.title]),i.showClose?e.createVNode("div",{class:"icon icon-close",onClick:d},null):null,e.createVNode("div",{class:"devui-content"},[l.value.content]),e.createVNode("div",{class:"devui-ctrl"},[i.showDots?e.createVNode("div",{class:"devui-dots"},[i.steps.map((t,g)=>e.createVNode("em",{class:["icon icon-dot-status",l.value===t?"devui-active":""],key:g},null))]):null,e.createVNode("div",{class:"devui-guide-btn"},[n.value>0?e.createVNode("div",{class:"devui-prev-step",onClick:()=>u(n.value-1)},["\u4E0A\u4E00\u6B65"]):null,n.value===s.value-1?e.createVNode("div",{onClick:d},["\u6211\u77E5\u9053\u5566"]):e.createVNode("div",{class:"devui-next-step",onClick:()=>{u(n.value+1)}},["\u6211\u77E5\u9053\u5566,\u7EE7\u7EED"])])])])])]}):null}}),V={mounted(i,o,r){},updated(i,o){}};h.install=function(i){i.component(h.name,h)};var w={title:"StepsGuide \u64CD\u4F5C\u6307\u5F15",category:"\u5BFC\u822A",status:"80%",install(i){i.use(h),i.directive("StepsGuide",V)}};a.StepsGuide=h,a.default=w,Object.defineProperty(a,"__esModule",{value:!0}),a[Symbol.toStringTag]="Module"});
@@ -1 +1 @@
1
- @charset "UTF-8";.d-steps-guide{width:400px;min-height:160px;background:#5e7ce0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 4px 16px 0) #5170ff4d;border-radius:var(--devui-border-radius-feedback, 4px);font-size:12px;color:#fff;padding:20px;position:absolute}.d-steps-guide .devui-title{font-size:12px;opacity:1;margin:0 0 20px;padding:0}.d-steps-guide>.devui-arrow,.d-steps-guide>.devui-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.d-steps-guide>.devui-arrow{border-width:8px}.d-steps-guide.left>.devui-arrow{top:23px;right:-6px;margin-top:-3px;border-right-width:0;transform:rotate(-135deg);border-left-color:#5e7ce0}.d-steps-guide.top>.devui-arrow,.d-steps-guide.top-left>.devui-arrow,.d-steps-guide.top-right>.devui-arrow{bottom:-6px;border-bottom-width:0;border-top-color:#5e7ce0;transform:rotate(135deg)}.d-steps-guide.top>.devui-arrow{left:calc(50% - 4px)}.d-steps-guide.top-left>.devui-arrow{left:23px}.d-steps-guide.top-right>.devui-arrow{right:23px;transform:rotate(-135deg)}.d-steps-guide.right>.devui-arrow{top:23px;left:-6px;margin-top:-3px;border-left-width:0;transform:rotate(135deg);border-right-color:#5e7ce0}.d-steps-guide.bottom>.devui-arrow,.d-steps-guide.bottom-left>.devui-arrow,.d-steps-guide.bottom-right>.devui-arrow{top:-6px;margin-left:3px;border-top-width:0;border-bottom-color:#5e7ce0}.d-steps-guide.bottom>.devui-arrow{left:calc(50% - 4px);transform:rotate(-135deg)}.d-steps-guide.bottom-right>.devui-arrow{right:23px;transform:rotate(135deg)}.d-steps-guide.bottom-left>.devui-arrow{left:23px;transform:rotate(-135deg)}.d-steps-guide>.devui-shining-dot,.d-steps-guide .devui-shining-plus{position:absolute;background:#5e7ce0;width:6px;height:6px;border-radius:var(--devui-border-radius-feedback, 4px)}.d-steps-guide.left>.devui-shining-dot,.d-steps-guide.left>.devui-shining-plus{top:21px;right:-30px}.d-steps-guide.right>.devui-shining-dot,.d-steps-guide.right>.devui-shining-plus{top:21px;left:-30px}.d-steps-guide.top>.devui-shining-dot,.d-steps-guide.top>.devui-shining-plus{left:calc(50% - 3px);bottom:-30px}.d-steps-guide.top-left>.devui-shining-dot,.d-steps-guide.top-left>.devui-shining-plus{left:21px;bottom:-30px}.d-steps-guide.top-right>.devui-shining-dot,.d-steps-guide.top-right>.devui-shining-plus{right:21px;bottom:-30px}.d-steps-guide.bottom>.devui-shining-dot,.d-steps-guide.bottom>.devui-shining-plus{left:calc(50% - 3px);top:-30px}.d-steps-guide.bottom-right>.devui-shining-dot,.d-steps-guide.bottom-right>.devui-shining-plus{top:-30px;right:21px}.d-steps-guide.bottom-left>.devui-shining-dot,.d-steps-guide.bottom-left>.devui-shining-plus{top:-30px;left:21px}.d-steps-guide .devui-shining-plus{animation:devui-glow 2s 0s infinite}.d-steps-guide .devui-guide-container{position:relative}.d-steps-guide .devui-guide-container>.icon-close{position:absolute;top:0;right:0;cursor:pointer}.d-steps-guide .devui-guide-container .devui-ctrl{display:flex;flex-wrap:wrap}.d-steps-guide .devui-guide-container .devui-ctrl .devui-dots{color:#fff;position:relative;top:25px;font-size:12px;height:30px}.d-steps-guide .devui-guide-container .devui-ctrl .devui-dots>em{opacity:.2;margin:0 5px 0 2px}.d-steps-guide .devui-guide-container .devui-ctrl .devui-dots>em.devui-active{opacity:1}.d-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn{display:flex;flex-flow:row nowrap;flex-grow:1;justify-content:flex-end;padding:20px 0 0;white-space:nowrap}.d-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn>div{color:#fff;background:rgba(255,255,255,.1);border-radius:4px;padding:5px 15px;cursor:pointer;margin-left:10px}.d-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn>div.devui-prev-step{background:none;border:solid 1px rgba(255,255,255,.1)}@keyframes devui-glow{0%{transform:scale(1);opacity:.5}25%{transform:scale(2);opacity:.3}50%{transform:scale(3);opacity:.1}75%{transform:scale(2);opacity:.3}to{transform:scale(1);opacity:.5}}
1
+ @charset "UTF-8";.devui-steps-guide{width:400px;min-height:160px;background:#5e7ce0;box-shadow:var(--devui-shadow-length-feedback-overlay, 0 4px 16px 0) #5170ff4d;border-radius:var(--devui-border-radius-feedback, 4px);font-size:12px;color:#fff;padding:20px;position:absolute}.devui-steps-guide .devui-title{font-size:12px;opacity:1;margin:0 0 20px;padding:0}.devui-steps-guide>.devui-arrow,.devui-steps-guide>.devui-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.devui-steps-guide>.devui-arrow{border-width:8px}.devui-steps-guide.left>.devui-arrow{top:23px;right:-6px;margin-top:-3px;border-right-width:0;transform:rotate(-135deg);border-left-color:#5e7ce0}.devui-steps-guide.top>.devui-arrow,.devui-steps-guide.top-left>.devui-arrow,.devui-steps-guide.top-right>.devui-arrow{bottom:-6px;border-bottom-width:0;border-top-color:#5e7ce0;transform:rotate(135deg)}.devui-steps-guide.top>.devui-arrow{left:calc(50% - 4px)}.devui-steps-guide.top-left>.devui-arrow{left:23px}.devui-steps-guide.top-right>.devui-arrow{right:23px;transform:rotate(-135deg)}.devui-steps-guide.right>.devui-arrow{top:23px;left:-6px;margin-top:-3px;border-left-width:0;transform:rotate(135deg);border-right-color:#5e7ce0}.devui-steps-guide.bottom>.devui-arrow,.devui-steps-guide.bottom-left>.devui-arrow,.devui-steps-guide.bottom-right>.devui-arrow{top:-6px;margin-left:3px;border-top-width:0;border-bottom-color:#5e7ce0}.devui-steps-guide.bottom>.devui-arrow{left:calc(50% - 4px);transform:rotate(-135deg)}.devui-steps-guide.bottom-right>.devui-arrow{right:23px;transform:rotate(135deg)}.devui-steps-guide.bottom-left>.devui-arrow{left:23px;transform:rotate(-135deg)}.devui-steps-guide>.devui-shining-dot,.devui-steps-guide .devui-shining-plus{position:absolute;background:#5e7ce0;width:6px;height:6px;border-radius:var(--devui-border-radius-feedback, 4px)}.devui-steps-guide.left>.devui-shining-dot,.devui-steps-guide.left>.devui-shining-plus{top:21px;right:-30px}.devui-steps-guide.right>.devui-shining-dot,.devui-steps-guide.right>.devui-shining-plus{top:21px;left:-30px}.devui-steps-guide.top>.devui-shining-dot,.devui-steps-guide.top>.devui-shining-plus{left:calc(50% - 3px);bottom:-30px}.devui-steps-guide.top-left>.devui-shining-dot,.devui-steps-guide.top-left>.devui-shining-plus{left:21px;bottom:-30px}.devui-steps-guide.top-right>.devui-shining-dot,.devui-steps-guide.top-right>.devui-shining-plus{right:21px;bottom:-30px}.devui-steps-guide.bottom>.devui-shining-dot,.devui-steps-guide.bottom>.devui-shining-plus{left:calc(50% - 3px);top:-30px}.devui-steps-guide.bottom-right>.devui-shining-dot,.devui-steps-guide.bottom-right>.devui-shining-plus{top:-30px;right:21px}.devui-steps-guide.bottom-left>.devui-shining-dot,.devui-steps-guide.bottom-left>.devui-shining-plus{top:-30px;left:21px}.devui-steps-guide .devui-shining-plus{animation:devui-glow 2s 0s infinite}.devui-steps-guide .devui-guide-container{position:relative}.devui-steps-guide .devui-guide-container>.icon-close{position:absolute;top:0;right:0;cursor:pointer}.devui-steps-guide .devui-guide-container .devui-ctrl{display:flex;flex-wrap:wrap}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-dots{color:#fff;position:relative;top:25px;font-size:12px;height:30px}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-dots>em{opacity:.2;margin:0 5px 0 2px}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-dots>em.devui-active{opacity:1}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn{display:flex;flex-flow:row nowrap;flex-grow:1;justify-content:flex-end;padding:20px 0 0;white-space:nowrap}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn>div{color:#fff;background:rgba(255,255,255,.1);border-radius:4px;padding:5px 15px;cursor:pointer;margin-left:10px}.devui-steps-guide .devui-guide-container .devui-ctrl .devui-guide-btn>div.devui-prev-step{background:none;border:solid 1px rgba(255,255,255,.1)}@keyframes devui-glow{0%{transform:scale(1);opacity:.5}25%{transform:scale(2);opacity:.3}50%{transform:scale(3);opacity:.1}75%{transform:scale(2);opacity:.3}to{transform:scale(1);opacity:.5}}
@@ -0,0 +1,7 @@
1
+ import { App } from 'vue';
2
+ declare function install(app: App): void
3
+ declare const _default: {
4
+ install: typeof install;
5
+ version: string;
6
+ };
7
+ export default _default;
@@ -1 +1,197 @@
1
- import{defineComponent as t,reactive as e,watch as o,onMounted as n,ref as i,createVNode as l}from"vue";var s=t({name:"DSticky",props:{zIndex:{type:Number},container:{type:Object},view:{type:Object,default:()=>({top:0,bottom:0})},scrollTarget:{type:Object}},emits:["statusChange"],setup(t,s){const{slots:a}=s;let d,p,u,r;let c,g=0;const m=e({status:"normal"});o((()=>t.zIndex),(()=>{w()})),o((()=>t.container),(()=>{w()})),o((()=>t.scrollTarget),(()=>{w()})),o((()=>m.status),(()=>{s.emit("statusChange",m.status)}),{immediate:!0});const w=()=>{c=R.value.parentElement,d=t.container?t.container:c,R.value.style.zIndex=t.zIndex,p=t.scrollTarget||window,p.addEventListener("scroll",v),y(p)},y=t=>{const e=t===window?[document.documentElement,document.body]:[t];let o=!1;e.forEach((t=>{t.scrollTop&&t.scrollTop>0&&(o=!0)})),o&&setTimeout(B)},f=e=>{const o=R.value||document.createElement("div");switch(e){case"normal":o.style.top="auto",o.style.left="auto",o.style.position="static";break;case"follow":const e=p,n=p&&p!==window?e.getBoundingClientRect().top:0;o.style.top=+n+(t.view&&t.view.top||0)+"px",o.style.left=o.getBoundingClientRect().left+"px",o.style.position="fixed";break;case"stay":o.style.top=b(o,c,"top")+"px",o.style.left="auto",o.style.position="relative";break;case"remain":"fixed"!==o.style.position&&"absolute"!==o.style.position&&(o.style.top=b(o,c,"top")+"px",o.style.left="auto",o.style.position="absolute"),o.style.top=h(o,c,d)+"px",o.style.left=b(o,c,"left")+"px",o.style.position="relative"}},v=()=>{const t=C,e=Date.now();u&&clearTimeout(u),r||(r=e),e-r>100?(t(),r=null,u=null):u=setTimeout((()=>{t(),r=null,u=null}),16)},C=()=>{d.getBoundingClientRect().left-(g||0)!=0?(m.status="stay",g=d.getBoundingClientRect().left):B()},B=()=>{const e=p,o=R.value||document.createElement("div"),n=p&&p!==window?e.getBoundingClientRect().top:0,i=window.getComputedStyle(d);c.getBoundingClientRect().top-n>(t.view&&t.view.top||0)||d.getBoundingClientRect().top+parseInt(i.paddingTop,10)+parseInt(i.borderTopWidth,10)-n>=(t.view&&t.view.top||0)?(m.status="normal",f(m.status)):d.getBoundingClientRect().bottom-parseInt(i.paddingBottom,10)-parseInt(i.borderBottomWidth,10)<n+(t.view&&t.view.top||0)+o.getBoundingClientRect().height+(t.view&&t.view.bottom||0)?(m.status="remain",f(m.status)):d.getBoundingClientRect().top+parseInt(i.paddingTop,10)-n<(t.view&&t.view.top||0)&&(m.status="follow",f(m.status))},b=(t,e,o)=>{const n={left:["left","Left"],top:["top","Top"]};if(window&&window.getComputedStyle){const i=window.getComputedStyle(e);return t.getBoundingClientRect()[n[o][0]]-e.getBoundingClientRect()[n[o][0]]-parseInt(i["left"===o?"paddingLeft":"paddingTop"],10)-parseInt(i["left"===o?"borderLeftWidth":"borderTopWidth"],10)}},h=(t,e,o)=>{if(window&&window.getComputedStyle){const n=window.getComputedStyle(o),i=o.getBoundingClientRect().height-t.getBoundingClientRect().height+o.getBoundingClientRect().top-e.getBoundingClientRect().top-parseInt(n.paddingTop,10)-parseInt(n.borderTopWidth,10)-parseInt(n.paddingBottom,10)-parseInt(n.borderBottomWidth,10);return i<0?0:i}};n((()=>{w()}));const R=i();return()=>l("div",{ref:R},[a.default?a.default():""])}});s.install=function(t){t.component(s.name,s)};var a={title:"Sticky 便贴",category:"通用",status:"50%",install(t){t.use(s)}};export{s as Sticky,a as default};
1
+ import { defineComponent, reactive, watch, onMounted, ref, createVNode } from "vue";
2
+ var Sticky = defineComponent({
3
+ name: "DSticky",
4
+ props: {
5
+ zIndex: {
6
+ type: Number
7
+ },
8
+ container: {
9
+ type: Object
10
+ },
11
+ view: {
12
+ type: Object,
13
+ default: () => {
14
+ return {
15
+ top: 0,
16
+ bottom: 0
17
+ };
18
+ }
19
+ },
20
+ scrollTarget: {
21
+ type: Object
22
+ }
23
+ },
24
+ emits: ["statusChange"],
25
+ setup(props, ctx) {
26
+ const {
27
+ slots
28
+ } = ctx;
29
+ let container;
30
+ let scrollTarget;
31
+ let scrollTimer;
32
+ let scrollPreStart;
33
+ const THROTTLE_DELAY = 16;
34
+ const THROTTLE_TRIGGER = 100;
35
+ let parentNode;
36
+ let containerLeft = 0;
37
+ const state = reactive({
38
+ status: "normal"
39
+ });
40
+ watch(() => props.zIndex, () => {
41
+ init();
42
+ });
43
+ watch(() => props.container, () => {
44
+ init();
45
+ });
46
+ watch(() => props.scrollTarget, () => {
47
+ init();
48
+ });
49
+ watch(() => state.status, () => {
50
+ ctx.emit("statusChange", state.status);
51
+ }, {
52
+ immediate: true
53
+ });
54
+ const init = () => {
55
+ parentNode = stickyRef.value.parentElement;
56
+ if (!props.container) {
57
+ container = parentNode;
58
+ } else {
59
+ container = props.container;
60
+ }
61
+ stickyRef.value.style.zIndex = props.zIndex;
62
+ scrollTarget = props.scrollTarget || window;
63
+ scrollTarget.addEventListener("scroll", throttle);
64
+ initScrollStatus(scrollTarget);
65
+ };
66
+ const initScrollStatus = (target) => {
67
+ const scrollTargets = target === window ? [document.documentElement, document.body] : [target];
68
+ let flag = false;
69
+ scrollTargets.forEach((scrollTarget2) => {
70
+ if (scrollTarget2.scrollTop && scrollTarget2.scrollTop > 0) {
71
+ flag = true;
72
+ }
73
+ });
74
+ if (flag) {
75
+ setTimeout(scrollHandler);
76
+ }
77
+ };
78
+ const statusProcess = (status) => {
79
+ const wrapper = stickyRef.value || document.createElement("div");
80
+ switch (status) {
81
+ case "normal":
82
+ wrapper.style.top = "auto";
83
+ wrapper.style.left = "auto";
84
+ wrapper.style.position = "static";
85
+ break;
86
+ case "follow":
87
+ const scrollTargetElement = scrollTarget;
88
+ const viewOffset = scrollTarget && scrollTarget !== window ? scrollTargetElement.getBoundingClientRect().top : 0;
89
+ wrapper.style.top = +viewOffset + (props.view && props.view.top || 0) + "px";
90
+ wrapper.style.left = wrapper.getBoundingClientRect().left + "px";
91
+ wrapper.style.position = "fixed";
92
+ break;
93
+ case "stay":
94
+ wrapper.style.top = calculateRelativePosition(wrapper, parentNode, "top") + "px";
95
+ wrapper.style.left = "auto";
96
+ wrapper.style.position = "relative";
97
+ break;
98
+ case "remain":
99
+ if (wrapper.style.position !== "fixed" && wrapper.style.position !== "absolute") {
100
+ wrapper.style.top = calculateRelativePosition(wrapper, parentNode, "top") + "px";
101
+ wrapper.style.left = "auto";
102
+ wrapper.style.position = "absolute";
103
+ }
104
+ wrapper.style.top = calculateRemainPosition(wrapper, parentNode, container) + "px";
105
+ wrapper.style.left = calculateRelativePosition(wrapper, parentNode, "left") + "px";
106
+ wrapper.style.position = "relative";
107
+ break;
108
+ }
109
+ };
110
+ const throttle = () => {
111
+ const fn = scrollAndResizeHock;
112
+ const time = Date.now();
113
+ if (scrollTimer) {
114
+ clearTimeout(scrollTimer);
115
+ }
116
+ if (!scrollPreStart) {
117
+ scrollPreStart = time;
118
+ }
119
+ if (time - scrollPreStart > THROTTLE_TRIGGER) {
120
+ fn();
121
+ scrollPreStart = null;
122
+ scrollTimer = null;
123
+ } else {
124
+ scrollTimer = setTimeout(() => {
125
+ fn();
126
+ scrollPreStart = null;
127
+ scrollTimer = null;
128
+ }, THROTTLE_DELAY);
129
+ }
130
+ };
131
+ const scrollAndResizeHock = () => {
132
+ if (container.getBoundingClientRect().left - (containerLeft || 0) !== 0) {
133
+ state.status = "stay";
134
+ containerLeft = container.getBoundingClientRect().left;
135
+ } else {
136
+ scrollHandler();
137
+ }
138
+ };
139
+ const scrollHandler = () => {
140
+ const scrollTargetElement = scrollTarget;
141
+ const wrapper = stickyRef.value || document.createElement("div");
142
+ const viewOffsetTop = scrollTarget && scrollTarget !== window ? scrollTargetElement.getBoundingClientRect().top : 0;
143
+ const computedStyle = window.getComputedStyle(container);
144
+ if (parentNode.getBoundingClientRect().top - viewOffsetTop > (props.view && props.view.top || 0)) {
145
+ state.status = "normal";
146
+ statusProcess(state.status);
147
+ } else if (container.getBoundingClientRect().top + parseInt(computedStyle.paddingTop, 10) + parseInt(computedStyle.borderTopWidth, 10) - viewOffsetTop >= (props.view && props.view.top || 0)) {
148
+ state.status = "normal";
149
+ statusProcess(state.status);
150
+ } else if (container.getBoundingClientRect().bottom - parseInt(computedStyle.paddingBottom, 10) - parseInt(computedStyle.borderBottomWidth, 10) < viewOffsetTop + (props.view && props.view.top || 0) + wrapper.getBoundingClientRect().height + (props.view && props.view.bottom || 0)) {
151
+ state.status = "remain";
152
+ statusProcess(state.status);
153
+ } else if (container.getBoundingClientRect().top + parseInt(computedStyle.paddingTop, 10) - viewOffsetTop < (props.view && props.view.top || 0)) {
154
+ state.status = "follow";
155
+ statusProcess(state.status);
156
+ }
157
+ };
158
+ const calculateRelativePosition = (element, relativeElement, direction) => {
159
+ const key = {
160
+ left: ["left", "Left"],
161
+ top: ["top", "Top"]
162
+ };
163
+ if (window && window.getComputedStyle) {
164
+ const computedStyle = window.getComputedStyle(relativeElement);
165
+ return element.getBoundingClientRect()[key[direction][0]] - relativeElement.getBoundingClientRect()[key[direction][0]] - parseInt(computedStyle[direction === "left" ? "paddingLeft" : "paddingTop"], 10) - parseInt(computedStyle[direction === "left" ? "borderLeftWidth" : "borderTopWidth"], 10);
166
+ }
167
+ };
168
+ const calculateRemainPosition = (element, relativeElement, container2) => {
169
+ if (window && window.getComputedStyle) {
170
+ const computedStyle = window.getComputedStyle(container2);
171
+ const result = container2.getBoundingClientRect().height - element.getBoundingClientRect().height + container2.getBoundingClientRect().top - relativeElement.getBoundingClientRect().top - parseInt(computedStyle["paddingTop"], 10) - parseInt(computedStyle["borderTopWidth"], 10) - parseInt(computedStyle["paddingBottom"], 10) - parseInt(computedStyle["borderBottomWidth"], 10);
172
+ return result < 0 ? 0 : result;
173
+ }
174
+ };
175
+ onMounted(() => {
176
+ init();
177
+ });
178
+ const stickyRef = ref();
179
+ return () => {
180
+ return createVNode("div", {
181
+ "ref": stickyRef
182
+ }, [slots.default ? slots.default() : ""]);
183
+ };
184
+ }
185
+ });
186
+ Sticky.install = function(app) {
187
+ app.component(Sticky.name, Sticky);
188
+ };
189
+ var index = {
190
+ title: "Sticky \u4FBF\u8D34",
191
+ category: "\u901A\u7528",
192
+ status: "50%",
193
+ install(app) {
194
+ app.use(Sticky);
195
+ }
196
+ };
197
+ export { Sticky, index as default };
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).index={},t.Vue)}(this,(function(t,e){"use strict";var o=e.defineComponent({name:"DSticky",props:{zIndex:{type:Number},container:{type:Object},view:{type:Object,default:()=>({top:0,bottom:0})},scrollTarget:{type:Object}},emits:["statusChange"],setup(t,o){const{slots:n}=o;let i,l,s,a;let d,p=0;const u=e.reactive({status:"normal"});e.watch((()=>t.zIndex),(()=>{r()})),e.watch((()=>t.container),(()=>{r()})),e.watch((()=>t.scrollTarget),(()=>{r()})),e.watch((()=>u.status),(()=>{o.emit("statusChange",u.status)}),{immediate:!0});const r=()=>{d=b.value.parentElement,i=t.container?t.container:d,b.value.style.zIndex=t.zIndex,l=t.scrollTarget||window,l.addEventListener("scroll",f),c(l)},c=t=>{const e=t===window?[document.documentElement,document.body]:[t];let o=!1;e.forEach((t=>{t.scrollTop&&t.scrollTop>0&&(o=!0)})),o&&setTimeout(m)},g=e=>{const o=b.value||document.createElement("div");switch(e){case"normal":o.style.top="auto",o.style.left="auto",o.style.position="static";break;case"follow":const e=l,n=l&&l!==window?e.getBoundingClientRect().top:0;o.style.top=+n+(t.view&&t.view.top||0)+"px",o.style.left=o.getBoundingClientRect().left+"px",o.style.position="fixed";break;case"stay":o.style.top=y(o,d,"top")+"px",o.style.left="auto",o.style.position="relative";break;case"remain":"fixed"!==o.style.position&&"absolute"!==o.style.position&&(o.style.top=y(o,d,"top")+"px",o.style.left="auto",o.style.position="absolute"),o.style.top=v(o,d,i)+"px",o.style.left=y(o,d,"left")+"px",o.style.position="relative"}},f=()=>{const t=w,e=Date.now();s&&clearTimeout(s),a||(a=e),e-a>100?(t(),a=null,s=null):s=setTimeout((()=>{t(),a=null,s=null}),16)},w=()=>{i.getBoundingClientRect().left-(p||0)!=0?(u.status="stay",p=i.getBoundingClientRect().left):m()},m=()=>{const e=l,o=b.value||document.createElement("div"),n=l&&l!==window?e.getBoundingClientRect().top:0,s=window.getComputedStyle(i);d.getBoundingClientRect().top-n>(t.view&&t.view.top||0)||i.getBoundingClientRect().top+parseInt(s.paddingTop,10)+parseInt(s.borderTopWidth,10)-n>=(t.view&&t.view.top||0)?(u.status="normal",g(u.status)):i.getBoundingClientRect().bottom-parseInt(s.paddingBottom,10)-parseInt(s.borderBottomWidth,10)<n+(t.view&&t.view.top||0)+o.getBoundingClientRect().height+(t.view&&t.view.bottom||0)?(u.status="remain",g(u.status)):i.getBoundingClientRect().top+parseInt(s.paddingTop,10)-n<(t.view&&t.view.top||0)&&(u.status="follow",g(u.status))},y=(t,e,o)=>{const n={left:["left","Left"],top:["top","Top"]};if(window&&window.getComputedStyle){const i=window.getComputedStyle(e);return t.getBoundingClientRect()[n[o][0]]-e.getBoundingClientRect()[n[o][0]]-parseInt(i["left"===o?"paddingLeft":"paddingTop"],10)-parseInt(i["left"===o?"borderLeftWidth":"borderTopWidth"],10)}},v=(t,e,o)=>{if(window&&window.getComputedStyle){const n=window.getComputedStyle(o),i=o.getBoundingClientRect().height-t.getBoundingClientRect().height+o.getBoundingClientRect().top-e.getBoundingClientRect().top-parseInt(n.paddingTop,10)-parseInt(n.borderTopWidth,10)-parseInt(n.paddingBottom,10)-parseInt(n.borderBottomWidth,10);return i<0?0:i}};e.onMounted((()=>{r()}));const b=e.ref();return()=>e.createVNode("div",{ref:b},[n.default?n.default():""])}});o.install=function(t){t.component(o.name,o)};var n={title:"Sticky 便贴",category:"通用",status:"50%",install(t){t.use(o)}};t.Sticky=o,t.default=n,Object.defineProperty(t,"__esModule",{value:!0}),t[Symbol.toStringTag]="Module"}));
1
+ (function(a,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],i):(a=typeof globalThis!="undefined"?globalThis:a||self,i(a.index={},a.Vue))})(this,function(a,i){"use strict";var r=i.defineComponent({name:"DSticky",props:{zIndex:{type:Number},container:{type:Object},view:{type:Object,default:()=>({top:0,bottom:0})},scrollTarget:{type:Object}},emits:["statusChange"],setup(e,h){const{slots:C}=h;let c,d,f,g;const B=16,S=100;let u,R=0;const s=i.reactive({status:"normal"});i.watch(()=>e.zIndex,()=>{w()}),i.watch(()=>e.container,()=>{w()}),i.watch(()=>e.scrollTarget,()=>{w()}),i.watch(()=>s.status,()=>{h.emit("statusChange",s.status)},{immediate:!0});const w=()=>{u=p.value.parentElement,e.container?c=e.container:c=u,p.value.style.zIndex=e.zIndex,d=e.scrollTarget||window,d.addEventListener("scroll",x),I(d)},I=l=>{const t=l===window?[document.documentElement,document.body]:[l];let o=!1;t.forEach(n=>{n.scrollTop&&n.scrollTop>0&&(o=!0)}),o&&setTimeout(v)},y=l=>{const t=p.value||document.createElement("div");switch(l){case"normal":t.style.top="auto",t.style.left="auto",t.style.position="static";break;case"follow":const n=d&&d!==window?d.getBoundingClientRect().top:0;t.style.top=+n+(e.view&&e.view.top||0)+"px",t.style.left=t.getBoundingClientRect().left+"px",t.style.position="fixed";break;case"stay":t.style.top=T(t,u,"top")+"px",t.style.left="auto",t.style.position="relative";break;case"remain":t.style.position!=="fixed"&&t.style.position!=="absolute"&&(t.style.top=T(t,u,"top")+"px",t.style.left="auto",t.style.position="absolute"),t.style.top=k(t,u,c)+"px",t.style.left=T(t,u,"left")+"px",t.style.position="relative";break}},x=()=>{const l=E,t=Date.now();f&&clearTimeout(f),g||(g=t),t-g>S?(l(),g=null,f=null):f=setTimeout(()=>{l(),g=null,f=null},B)},E=()=>{c.getBoundingClientRect().left-(R||0)!=0?(s.status="stay",R=c.getBoundingClientRect().left):v()},v=()=>{const l=d,t=p.value||document.createElement("div"),o=d&&d!==window?l.getBoundingClientRect().top:0,n=window.getComputedStyle(c);u.getBoundingClientRect().top-o>(e.view&&e.view.top||0)||c.getBoundingClientRect().top+parseInt(n.paddingTop,10)+parseInt(n.borderTopWidth,10)-o>=(e.view&&e.view.top||0)?(s.status="normal",y(s.status)):c.getBoundingClientRect().bottom-parseInt(n.paddingBottom,10)-parseInt(n.borderBottomWidth,10)<o+(e.view&&e.view.top||0)+t.getBoundingClientRect().height+(e.view&&e.view.bottom||0)?(s.status="remain",y(s.status)):c.getBoundingClientRect().top+parseInt(n.paddingTop,10)-o<(e.view&&e.view.top||0)&&(s.status="follow",y(s.status))},T=(l,t,o)=>{const n={left:["left","Left"],top:["top","Top"]};if(window&&window.getComputedStyle){const m=window.getComputedStyle(t);return l.getBoundingClientRect()[n[o][0]]-t.getBoundingClientRect()[n[o][0]]-parseInt(m[o==="left"?"paddingLeft":"paddingTop"],10)-parseInt(m[o==="left"?"borderLeftWidth":"borderTopWidth"],10)}},k=(l,t,o)=>{if(window&&window.getComputedStyle){const n=window.getComputedStyle(o),m=o.getBoundingClientRect().height-l.getBoundingClientRect().height+o.getBoundingClientRect().top-t.getBoundingClientRect().top-parseInt(n.paddingTop,10)-parseInt(n.borderTopWidth,10)-parseInt(n.paddingBottom,10)-parseInt(n.borderBottomWidth,10);return m<0?0:m}};i.onMounted(()=>{w()});const p=i.ref();return()=>i.createVNode("div",{ref:p},[C.default?C.default():""])}});r.install=function(e){e.component(r.name,r)};var b={title:"Sticky \u4FBF\u8D34",category:"\u901A\u7528",status:"50%",install(e){e.use(r)}};a.Sticky=r,a.default=b,Object.defineProperty(a,"__esModule",{value:!0}),a[Symbol.toStringTag]="Module"});