vue-devui 1.6.13 → 1.6.15

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 (66) hide show
  1. package/auto-complete/index.es.js +20 -39
  2. package/auto-complete/index.umd.js +10 -10
  3. package/breadcrumb/index.es.js +25 -39
  4. package/breadcrumb/index.umd.js +1 -1
  5. package/category-search/index.es.js +27 -41
  6. package/category-search/index.umd.js +13 -13
  7. package/category-search/style.css +1 -1
  8. package/checkbox/index.es.js +20 -39
  9. package/checkbox/index.umd.js +11 -11
  10. package/code-review/index.es.js +20 -39
  11. package/code-review/index.umd.js +17 -17
  12. package/data-grid/index.es.js +27 -41
  13. package/data-grid/index.umd.js +12 -12
  14. package/date-picker-pro/index.es.js +20 -39
  15. package/date-picker-pro/index.umd.js +13 -13
  16. package/dropdown/index.es.js +25 -39
  17. package/dropdown/index.umd.js +1 -1
  18. package/editable-select/index.es.js +20 -39
  19. package/editable-select/index.umd.js +14 -14
  20. package/editor-md/index.es.js +27 -41
  21. package/editor-md/index.umd.js +23 -23
  22. package/form/index.es.js +20 -39
  23. package/form/index.umd.js +12 -12
  24. package/input/index.es.js +20 -39
  25. package/input/index.umd.js +10 -10
  26. package/input-number/index.es.js +20 -39
  27. package/input-number/index.umd.js +18 -18
  28. package/mention/index.es.js +20 -39
  29. package/mention/index.umd.js +18 -18
  30. package/modal/index.es.js +18 -37
  31. package/modal/index.umd.js +2 -2
  32. package/overlay/index.es.js +18 -37
  33. package/overlay/index.umd.js +1 -1
  34. package/package.json +2 -2
  35. package/pagination/index.es.js +27 -41
  36. package/pagination/index.umd.js +13 -13
  37. package/popover/index.es.js +20 -39
  38. package/popover/index.umd.js +14 -14
  39. package/radio/index.es.js +20 -39
  40. package/radio/index.umd.js +17 -17
  41. package/search/index.es.js +20 -39
  42. package/search/index.umd.js +12 -12
  43. package/select/index.es.js +20 -39
  44. package/select/index.umd.js +16 -16
  45. package/splitter/index.es.js +20 -39
  46. package/splitter/index.umd.js +16 -16
  47. package/style.css +1 -1
  48. package/switch/index.es.js +20 -39
  49. package/switch/index.umd.js +12 -12
  50. package/table/index.es.js +27 -41
  51. package/table/index.umd.js +14 -14
  52. package/textarea/index.es.js +20 -39
  53. package/textarea/index.umd.js +15 -15
  54. package/time-picker/index.es.js +20 -39
  55. package/time-picker/index.umd.js +16 -16
  56. package/time-select/index.es.js +20 -39
  57. package/time-select/index.umd.js +10 -10
  58. package/tooltip/index.es.js +20 -39
  59. package/tooltip/index.umd.js +17 -17
  60. package/tree/index.es.js +20 -39
  61. package/tree/index.umd.js +12 -12
  62. package/types/dropdown/src/dropdown-types.d.ts +4 -0
  63. package/types/dropdown/src/dropdown.d.ts +9 -0
  64. package/types/tooltip/src/tooltip.d.ts +1 -1
  65. package/vue-devui.es.js +26 -40
  66. package/vue-devui.umd.js +63 -63
@@ -18,7 +18,7 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { toRefs, watch, onMounted, onUnmounted, ref, computed, defineComponent, createVNode, Transition, mergeProps, unref, nextTick, withModifiers, Comment, Text, h, Fragment, inject, withDirectives, cloneVNode, provide, Teleport, vShow } from "vue";
21
- import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom";
21
+ import { offset, flip, arrow, computePosition } from "@floating-ui/dom";
22
22
  import { onClickOutside } from "@vueuse/core";
23
23
  const dropdownProps = {
24
24
  visible: {
@@ -63,6 +63,10 @@ const dropdownProps = {
63
63
  destroyOnHide: {
64
64
  type: Boolean,
65
65
  default: true
66
+ },
67
+ teleport: {
68
+ type: [String, Object],
69
+ default: "body"
66
70
  }
67
71
  };
68
72
  const POPPER_TRIGGER_TOKEN = Symbol("popper-trigger");
@@ -358,16 +362,6 @@ const flexibleOverlayProps = {
358
362
  default: false
359
363
  }
360
364
  };
361
- function getScrollParent(element) {
362
- const overflowRegex = /(auto|scroll|hidden)/;
363
- for (let parent = element; parent = parent.parentElement; parent.parentElement !== document.body) {
364
- const style = window.getComputedStyle(parent);
365
- if (overflowRegex.test(style.overflow + style.overflowX + style.overflowY)) {
366
- return parent;
367
- }
368
- }
369
- return window;
370
- }
371
365
  function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
372
366
  let { x, y } = point;
373
367
  if (!isArrowCenter) {
@@ -388,9 +382,9 @@ function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
388
382
  return { x, y };
389
383
  }
390
384
  function useOverlay(props, emit) {
385
+ const { position, showArrow } = toRefs(props);
391
386
  const overlayRef = ref();
392
387
  const arrowRef = ref();
393
- let originParent = null;
394
388
  const updateArrowPosition = (arrowEl, placement, point, overlayEl) => {
395
389
  const { x, y } = adjustArrowPosition(props.isArrowCenter, point, placement, overlayEl.getBoundingClientRect());
396
390
  const staticSide = {
@@ -411,51 +405,42 @@ function useOverlay(props, emit) {
411
405
  const hostEl = props.origin;
412
406
  const overlayEl = unref(overlayRef.value);
413
407
  const arrowEl = unref(arrowRef.value);
414
- const middleware = [
415
- offset(props.offset),
416
- autoPlacement({
417
- alignment: props.align,
418
- allowedPlacements: props.position
419
- })
420
- ];
421
- props.showArrow && middleware.push(arrow({ element: arrowEl }));
422
- props.shiftOffset !== void 0 && middleware.push(shift());
423
- if (!overlayEl) {
424
- return;
408
+ const [mainPosition, ...fallbackPosition] = position.value;
409
+ const middleware = [offset(props.offset)];
410
+ middleware.push(fallbackPosition.length ? flip({ fallbackPlacements: fallbackPosition }) : flip());
411
+ if (showArrow.value) {
412
+ middleware.push(arrow({ element: arrowRef.value }));
425
413
  }
426
414
  const { x, y, placement, middlewareData } = await computePosition(hostEl, overlayEl, {
427
415
  strategy: "fixed",
416
+ placement: mainPosition,
428
417
  middleware
429
418
  });
430
419
  let applyX = x;
431
420
  let applyY = y;
432
- if (props.shiftOffset !== void 0) {
433
- const { x: shiftX, y: shiftY } = middlewareData.shift;
434
- shiftX < 0 && (applyX -= props.shiftOffset);
435
- shiftX > 0 && (applyX += props.shiftOffset);
436
- shiftY < 0 && (applyY -= props.shiftOffset);
437
- shiftY > 0 && (applyY += props.shiftOffset);
438
- }
439
421
  emit("positionChange", placement);
440
422
  Object.assign(overlayEl.style, { top: `${applyY}px`, left: `${applyX}px` });
441
423
  props.showArrow && updateArrowPosition(arrowEl, placement, middlewareData.arrow, overlayEl);
442
424
  };
425
+ const scrollCallback = (e) => {
426
+ var _a, _b;
427
+ const scrollElement = e.target;
428
+ if (scrollElement == null ? void 0 : scrollElement.contains((_b = (_a = props.origin) == null ? void 0 : _a.$el) != null ? _b : props.origin)) {
429
+ updatePosition();
430
+ }
431
+ };
443
432
  watch(() => props.modelValue, () => {
444
433
  if (props.modelValue && props.origin) {
445
- originParent = getScrollParent(props.origin);
446
434
  nextTick(updatePosition);
447
- originParent == null ? void 0 : originParent.addEventListener("scroll", updatePosition);
448
- originParent !== window && window.addEventListener("scroll", updatePosition);
435
+ window.addEventListener("scroll", scrollCallback, true);
449
436
  window.addEventListener("resize", updatePosition);
450
437
  } else {
451
- originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
452
- originParent !== window && window.removeEventListener("scroll", updatePosition);
438
+ window.removeEventListener("scroll", scrollCallback, true);
453
439
  window.removeEventListener("resize", updatePosition);
454
440
  }
455
441
  });
456
442
  onUnmounted(() => {
457
- originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
458
- originParent !== window && window.removeEventListener("scroll", updatePosition);
443
+ window.removeEventListener("scroll", scrollCallback, true);
459
444
  window.removeEventListener("resize", updatePosition);
460
445
  });
461
446
  return { arrowRef, overlayRef, updatePosition };
@@ -574,7 +559,8 @@ var Dropdown = defineComponent({
574
559
  offset: offset2,
575
560
  destroyOnHide,
576
561
  shiftOffset,
577
- showAnimation
562
+ showAnimation,
563
+ teleport
578
564
  } = toRefs(props);
579
565
  const origin = ref();
580
566
  const dropdownRef = ref();
@@ -616,7 +602,7 @@ var Dropdown = defineComponent({
616
602
  return [(_a = slots.default) == null ? void 0 : _a.call(slots)];
617
603
  }
618
604
  }), createVNode(Teleport, {
619
- "to": "body"
605
+ "to": teleport.value
620
606
  }, {
621
607
  default: () => [createVNode(Transition, {
622
608
  "name": showAnimation.value ? ns2.m(`fade-${currentPosition.value}`) : ""
@@ -1 +1 @@
1
- var ie=Object.defineProperty,se=Object.defineProperties;var ue=Object.getOwnPropertyDescriptors;var F=Object.getOwnPropertySymbols;var de=Object.prototype.hasOwnProperty,ce=Object.prototype.propertyIsEnumerable;var _=(d,e,g)=>e in d?ie(d,e,{enumerable:!0,configurable:!0,writable:!0,value:g}):d[e]=g,q=(d,e)=>{for(var g in e||(e={}))de.call(e,g)&&_(d,g,e[g]);if(F)for(var g of F(e))ce.call(e,g)&&_(d,g,e[g]);return d},z=(d,e)=>se(d,ue(e));(function(d,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue"),require("@floating-ui/dom"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","@floating-ui/dom","@vueuse/core"],e):(d=typeof globalThis!="undefined"?globalThis:d||self,e(d.index={},d.Vue,d.dom,d.core))})(this,function(d,e,g,H){"use strict";const U={visible:{type:Boolean,default:!1},trigger:{type:String,default:"click"},closeScope:{type:String,default:"all"},position:{type:Array,default:["bottom"]},align:{type:String,default:null},offset:{type:[Number,Object],default:4},shiftOffset:{type:Number},closeOnMouseLeaveMenu:{type:Boolean,default:!1},showAnimation:{type:Boolean,default:!0},overlayClass:{type:String,default:""},destroyOnHide:{type:Boolean,default:!0}},D=Symbol("popper-trigger");function Y(t){return t instanceof Element?t:t&&typeof t=="object"&&t.$el instanceof Element?t.$el:null}const O=new Map;function N(t,o,n){return t==null||t.addEventListener(o,n),()=>{t==null||t.removeEventListener(o,n)}}const I=({id:t,isOpen:o,origin:n,dropdownRef:i,props:l,emit:a})=>{let r=!1,s=!1;const{trigger:u,closeScope:f,closeOnMouseLeaveMenu:y}=e.toRefs(l),m=p=>{o.value=p,a("toggle",o.value)},w=async(p,E)=>{await new Promise(c=>setTimeout(c,50)),!(p==="origin"&&r||p==="dropdown"&&s)&&(E&&[...O.values()].reverse().forEach(c=>{setTimeout(()=>{var V;(V=c.toggle)==null||V.call(c)},0)}),m(!1))};e.watch([u,n,i],([p,E,c],V,v)=>{const b=Y(E),P=[];setTimeout(()=>{P.push(N(document,"click",h=>{h.stopPropagation();const x=[...O.values()];!o.value||f.value==="none"||(c==null?void 0:c.contains(h.target))&&f.value==="blank"||x.some(A=>{var T;return(T=A.toggleEl)==null?void 0:T.contains(h.target)})&&x.some(A=>{var T;return(T=A.menuEl)==null?void 0:T.contains(h.target)})||([...O.values()].reverse().forEach(A=>{setTimeout(()=>{var T,C;((T=A.toggleEl)==null?void 0:T.contains(h.target))||(C=A.toggle)==null||C.call(A)},0)}),r=!1)}))},0),p==="click"?P.push(N(b,"click",()=>m(!o.value)),N(c,"mouseleave",h=>{var x;y.value&&!((x=O.get(t).child)==null?void 0:x.contains(h.relatedTarget))&&w("dropdown",!0)})):p==="hover"&&P.push(N(b,"mouseenter",()=>{s=!0,m(!0)}),N(b,"mouseleave",()=>{s=!1,w("origin")}),N(c,"mouseenter",()=>{r=!0,o.value=!0}),N(c,"mouseleave",h=>{var x;r=!1,!(h.relatedTarget&&((b==null?void 0:b.contains(h.relatedTarget))||((x=O.get(t).child)==null?void 0:x.contains(h.relatedTarget))))&&w("dropdown",!0)})),v(()=>P.forEach(h=>h()))})};function X(t,o,n,i,l,a){e.watch(o,(r,s)=>{s!==void 0&&(n.value=r,a("toggle",n.value))},{immediate:!0}),e.watch([n,l],([r,s])=>{var u;if(r){O.set(t,z(q({},O.get(t)),{menuEl:s,toggle:()=>{n.value=!1,a("toggle",n.value)}}));for(const f of O.values())((u=f.menuEl)==null?void 0:u.contains(i.value))&&(f.child=s)}}),e.onMounted(()=>{O.set(t,{toggleEl:i.value})}),e.onUnmounted(()=>{O.delete(t)})}function G(t,o,n){const{showAnimation:i,overlayClass:l,destroyOnHide:a}=e.toRefs(t),r=e.ref(!1),s=e.ref(!1),u=e.computed(()=>({transformOrigin:o.value==="top"?"0% 100%":"0% 0%",zIndex:"var(--devui-z-index-dropdown, 1052)"})),f=e.computed(()=>({"fade-in-bottom":i.value&&n.value&&o.value==="bottom","fade-in-top":i.value&&n.value&&o.value==="top",[`${l.value}`]:!0})),y=m=>{o.value=m.includes("top")||m.includes("right-end")||m.includes("left-end")?"top":"bottom"};return e.watch(n,m=>{r.value=a.value?m:!0,s.value=m}),{overlayModelValue:r,overlayShowValue:s,styles:u,classes:f,handlePositionChange:y}}const K={modelValue:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}};function J(){if(document.documentElement.scrollHeight>document.documentElement.clientHeight){const t=document.documentElement.scrollTop,o=document.documentElement.getAttribute("style");return document.documentElement.style.position="fixed",document.documentElement.style.top=`-${t}px`,document.documentElement.style.width=document.documentElement.style.width||"100%",document.documentElement.style.overflowY="scroll",()=>{o?document.documentElement.setAttribute("style",o):document.documentElement.removeAttribute("style"),document.documentElement.scrollTop=t}}}function Q(t,o){let n;const i=a=>{a.preventDefault(),o.emit("click",a),t.closeOnClickOverlay&&o.emit("update:modelValue",!1)},l=()=>{n==null||n()};return e.watch(()=>t.modelValue,a=>{a?t.lockScroll&&(n=J()):l()}),e.onUnmounted(l),{onClick:i}}function B(t,o,n){let i=t;return o&&(i+=`__${o}`),n&&(i+=`--${n}`),i}function S(t,o=!1){const n=o?`.devui-${t}`:`devui-${t}`;return{b:()=>B(n),e:s=>s?B(n,s):"",m:s=>s?B(n,"",s):"",em:(s,u)=>s&&u?B(n,s,u):""}}var fe="";e.defineComponent({name:"DFixedOverlay",inheritAttrs:!1,props:K,emits:["update:modelValue","click"],setup(t,o){const{modelValue:n}=e.toRefs(t),i=S("fixed-overlay"),{onClick:l}=Q(t,o);return()=>e.createVNode(e.Transition,{name:i.m("fade")},{default:()=>{var a,r;return[n.value&&e.createVNode("div",e.mergeProps({class:i.b()},o.attrs,{onClick:l}),[(r=(a=o.slots).default)==null?void 0:r.call(a)])]}})}});const W={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},offset:{type:[Number,Object],default:8},shiftOffset:{type:Number},align:{type:String,default:null},showArrow:{type:Boolean,default:!1},isArrowCenter:{type:Boolean,default:!0},clickEventBubble:{type:Boolean,default:!1}};function Z(t){const o=/(auto|scroll|hidden)/;for(let n=t;n=n.parentElement;n.parentElement!==document.body){const i=window.getComputedStyle(n);if(o.test(i.overflow+i.overflowX+i.overflowY))return n}return window}function ee(t,o,n,i){let{x:l,y:a}=o;if(!t){const{width:r,height:s}=i;l&&n.includes("start")&&(l=12),l&&n.includes("end")&&(l=Math.round(r-24)),a&&n.includes("start")&&(a=10),a&&n.includes("end")&&(a=s-14)}return{x:l,y:a}}function te(t,o){const n=e.ref(),i=e.ref();let l=null;const a=(s,u,f,y)=>{const{x:m,y:w}=ee(t.isArrowCenter,f,u,y.getBoundingClientRect()),p={top:"bottom",right:"left",bottom:"top",left:"right"}[u.split("-")[0]];Object.assign(s.style,{left:m?`${m}px`:"",top:w?`${w}px`:"",right:"",bottom:"",[p]:"-4px"})},r=async()=>{const s=t.origin,u=e.unref(n.value),f=e.unref(i.value),y=[g.offset(t.offset),g.autoPlacement({alignment:t.align,allowedPlacements:t.position})];if(t.showArrow&&y.push(g.arrow({element:f})),t.shiftOffset!==void 0&&y.push(g.shift()),!u)return;const{x:m,y:w,placement:p,middlewareData:E}=await g.computePosition(s,u,{strategy:"fixed",middleware:y});let c=m,V=w;if(t.shiftOffset!==void 0){const{x:v,y:b}=E.shift;v<0&&(c-=t.shiftOffset),v>0&&(c+=t.shiftOffset),b<0&&(V-=t.shiftOffset),b>0&&(V+=t.shiftOffset)}o("positionChange",p),Object.assign(u.style,{top:`${V}px`,left:`${c}px`}),t.showArrow&&a(f,p,E.arrow,u)};return e.watch(()=>t.modelValue,()=>{t.modelValue&&t.origin?(l=Z(t.origin),e.nextTick(r),l==null||l.addEventListener("scroll",r),l!==window&&window.addEventListener("scroll",r),window.addEventListener("resize",r)):(l==null||l.removeEventListener("scroll",r),l!==window&&window.removeEventListener("scroll",r),window.removeEventListener("resize",r))}),e.onUnmounted(()=>{l==null||l.removeEventListener("scroll",r),l!==window&&window.removeEventListener("scroll",r),window.removeEventListener("resize",r)}),{arrowRef:i,overlayRef:n,updatePosition:r}}var me="";const R=e.defineComponent({name:"DFlexibleOverlay",inheritAttrs:!1,props:W,emits:["update:modelValue","positionChange"],setup(t,{slots:o,attrs:n,emit:i,expose:l}){const a=S("flexible-overlay"),{clickEventBubble:r}=e.toRefs(t),{arrowRef:s,overlayRef:u,updatePosition:f}=te(t,i);return l({updatePosition:f}),()=>{var y;return t.modelValue&&e.createVNode("div",e.mergeProps({ref:u,class:a.b()},n,{onClick:e.withModifiers(()=>({}),[r.value?"":"stop"]),onPointerup:e.withModifiers(()=>({}),["stop"])}),[(y=o.default)==null?void 0:y.call(o),t.showArrow&&e.createVNode("div",{ref:s,class:a.e("arrow")},null)])}}}),oe=t=>t!==null&&typeof t=="object",ne=S("popper-trigger");function $(t){return e.h("span",{class:ne.b()},t)}function j(t){for(const o of t){if(oe(o)){if(o.type===e.Comment)continue;return o.type==="svg"||o.type===e.Text?$(o):o.type===e.Fragment?j(o.children):o}return $(o)}return null}var le=e.defineComponent({name:"DPopperTrigger",setup(t,o){const{slots:n,attrs:i}=o;return()=>{var s;const l=(s=n.default)==null?void 0:s.call(n,i),a=e.inject(D);if(!l)return null;const r=j(l);return r?e.withDirectives(e.cloneVNode(r,i),[[{mounted(u){a.value=u},updated(u){a.value=u},unmounted(){a.value=null}}]]):null}}}),pe="";let ae=1;var M=e.defineComponent({name:"DDropdown",inheritAttrs:!1,props:U,emits:["toggle"],setup(t,{slots:o,attrs:n,emit:i,expose:l}){const{visible:a,position:r,align:s,offset:u,destroyOnHide:f,shiftOffset:y,showAnimation:m}=e.toRefs(t),w=e.ref(),p=e.ref(),E=e.ref(),c=`dropdown_${ae++}`,V=e.ref(!1),v=e.ref("bottom"),b=S("dropdown");e.provide(D,w),I({id:c,isOpen:V,origin:w,dropdownRef:p,props:t,emit:i}),X(c,a,V,w,p,i);const{overlayModelValue:P,overlayShowValue:h,styles:x,classes:A,handlePositionChange:T}=G(t,v,V);return e.watch(h,C=>{e.nextTick(()=>{!f.value&&C&&E.value.updatePosition()})}),l({updatePosition:()=>E.value.updatePosition()}),()=>e.createVNode(e.Fragment,null,[e.createVNode(le,null,{default:()=>{var C;return[(C=o.default)==null?void 0:C.call(o)]}}),e.createVNode(e.Teleport,{to:"body"},{default:()=>[e.createVNode(e.Transition,{name:m.value?b.m(`fade-${v.value}`):""},{default:()=>[e.withDirectives(e.createVNode(R,{modelValue:P.value,"onUpdate:modelValue":C=>P.value=C,ref:E,origin:w.value,position:r.value,align:s.value,offset:u.value,shiftOffset:y==null?void 0:y.value,onPositionChange:T,"click-event-bubble":!0,class:A.value,style:x.value},{default:()=>{var C;return[e.createVNode("div",e.mergeProps({ref:p,class:b.e("menu-wrap")},n),[(C=o.menu)==null?void 0:C.call(o)])]}}),[[e.vShow,h.value]])]})]})])}});const L={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},align:{type:String,default:null},offset:{type:[Number,Object],default:4},clickOutside:{type:Function,default:()=>!0},showAnimation:{type:Boolean,default:!0},overlayClass:{type:String,default:""}};var k=e.defineComponent({name:"DDropdownMenu",inheritAttrs:!1,props:L,emits:["update:modelValue"],setup(t,{slots:o,attrs:n,emit:i}){const{modelValue:l,origin:a,position:r,align:s,offset:u,clickOutside:f,showAnimation:y,overlayClass:m}=e.toRefs(t),w=e.ref(null),p=S("dropdown");H.onClickOutside(w,v=>{var b,P;((b=f.value)==null?void 0:b.call(f))&&!((P=a==null?void 0:a.value)==null?void 0:P.contains(v.target))&&i("update:modelValue",!1)});const E=e.ref("bottom"),c=v=>{E.value=v.split("-")[0]==="top"?"top":"bottom"},V=e.computed(()=>({transformOrigin:E.value==="top"?"0% 100%":"0% 0%"}));return()=>e.createVNode(e.Teleport,{to:"body"},{default:()=>[e.createVNode(e.Transition,{name:y.value?p.m(`fade-${E.value}`):""},{default:()=>[e.createVNode(R,{modelValue:l.value,"onUpdate:modelValue":v=>l.value=v,origin:a==null?void 0:a.value,position:r.value,align:s.value,offset:u.value,onPositionChange:c,class:m.value,style:V.value},{default:()=>{var v;return[e.createVNode("div",e.mergeProps({ref:w,class:p.e("menu-wrap")},n),[(v=o.default)==null?void 0:v.call(o)])]}})]})]})}}),re={title:"Dropdown \u4E0B\u62C9\u83DC\u5355",category:"\u5BFC\u822A",status:"50%",install(t){t.component(M.name,M),t.component(k.name,k)}};d.Dropdown=M,d.DropdownMenu=k,d.default=re,d.dropdownMenuProps=L,Object.defineProperty(d,"__esModule",{value:!0}),d[Symbol.toStringTag]="Module"});
1
+ var ie=Object.defineProperty,se=Object.defineProperties;var ue=Object.getOwnPropertyDescriptors;var _=Object.getOwnPropertySymbols;var ce=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable;var q=(u,e,h)=>e in u?ie(u,e,{enumerable:!0,configurable:!0,writable:!0,value:h}):u[e]=h,z=(u,e)=>{for(var h in e||(e={}))ce.call(e,h)&&q(u,h,e[h]);if(_)for(var h of _(e))de.call(e,h)&&q(u,h,e[h]);return u},H=(u,e)=>se(u,ue(e));(function(u,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue"),require("@floating-ui/dom"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","@floating-ui/dom","@vueuse/core"],e):(u=typeof globalThis!="undefined"?globalThis:u||self,e(u.index={},u.Vue,u.dom,u.core))})(this,function(u,e,h,U){"use strict";const I={visible:{type:Boolean,default:!1},trigger:{type:String,default:"click"},closeScope:{type:String,default:"all"},position:{type:Array,default:["bottom"]},align:{type:String,default:null},offset:{type:[Number,Object],default:4},shiftOffset:{type:Number},closeOnMouseLeaveMenu:{type:Boolean,default:!1},showAnimation:{type:Boolean,default:!0},overlayClass:{type:String,default:""},destroyOnHide:{type:Boolean,default:!0},teleport:{type:[String,Object],default:"body"}},R=Symbol("popper-trigger");function G(t){return t instanceof Element?t:t&&typeof t=="object"&&t.$el instanceof Element?t.$el:null}const C=new Map;function k(t,o,n){return t==null||t.addEventListener(o,n),()=>{t==null||t.removeEventListener(o,n)}}const Y=({id:t,isOpen:o,origin:n,dropdownRef:r,props:i,emit:l})=>{let s=!1,a=!1;const{trigger:c,closeScope:m,closeOnMouseLeaveMenu:d}=e.toRefs(i),p=g=>{o.value=g,l("toggle",o.value)},b=async(g,y)=>{await new Promise(f=>setTimeout(f,50)),!(g==="origin"&&s||g==="dropdown"&&a)&&(y&&[...C.values()].reverse().forEach(f=>{setTimeout(()=>{var O;(O=f.toggle)==null||O.call(f)},0)}),p(!1))};e.watch([c,n,r],([g,y,f],O,w)=>{const V=G(y),E=[];setTimeout(()=>{E.push(k(document,"click",v=>{v.stopPropagation();const P=[...C.values()];!o.value||m.value==="none"||(f==null?void 0:f.contains(v.target))&&m.value==="blank"||P.some(A=>{var T;return(T=A.toggleEl)==null?void 0:T.contains(v.target)})&&P.some(A=>{var T;return(T=A.menuEl)==null?void 0:T.contains(v.target)})||([...C.values()].reverse().forEach(A=>{setTimeout(()=>{var T,M;((T=A.toggleEl)==null?void 0:T.contains(v.target))||(M=A.toggle)==null||M.call(A)},0)}),s=!1)}))},0),g==="click"?E.push(k(V,"click",()=>p(!o.value)),k(f,"mouseleave",v=>{var P;d.value&&!((P=C.get(t).child)==null?void 0:P.contains(v.relatedTarget))&&b("dropdown",!0)})):g==="hover"&&E.push(k(V,"mouseenter",()=>{a=!0,p(!0)}),k(V,"mouseleave",()=>{a=!1,b("origin")}),k(f,"mouseenter",()=>{s=!0,o.value=!0}),k(f,"mouseleave",v=>{var P;s=!1,!(v.relatedTarget&&((V==null?void 0:V.contains(v.relatedTarget))||((P=C.get(t).child)==null?void 0:P.contains(v.relatedTarget))))&&b("dropdown",!0)})),w(()=>E.forEach(v=>v()))})};function K(t,o,n,r,i,l){e.watch(o,(s,a)=>{a!==void 0&&(n.value=s,l("toggle",n.value))},{immediate:!0}),e.watch([n,i],([s,a])=>{var c;if(s){C.set(t,H(z({},C.get(t)),{menuEl:a,toggle:()=>{n.value=!1,l("toggle",n.value)}}));for(const m of C.values())((c=m.menuEl)==null?void 0:c.contains(r.value))&&(m.child=a)}}),e.onMounted(()=>{C.set(t,{toggleEl:r.value})}),e.onUnmounted(()=>{C.delete(t)})}function X(t,o,n){const{showAnimation:r,overlayClass:i,destroyOnHide:l}=e.toRefs(t),s=e.ref(!1),a=e.ref(!1),c=e.computed(()=>({transformOrigin:o.value==="top"?"0% 100%":"0% 0%",zIndex:"var(--devui-z-index-dropdown, 1052)"})),m=e.computed(()=>({"fade-in-bottom":r.value&&n.value&&o.value==="bottom","fade-in-top":r.value&&n.value&&o.value==="top",[`${i.value}`]:!0})),d=p=>{o.value=p.includes("top")||p.includes("right-end")||p.includes("left-end")?"top":"bottom"};return e.watch(n,p=>{s.value=l.value?p:!0,a.value=p}),{overlayModelValue:s,overlayShowValue:a,styles:c,classes:m,handlePositionChange:d}}const J={modelValue:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}};function Q(){if(document.documentElement.scrollHeight>document.documentElement.clientHeight){const t=document.documentElement.scrollTop,o=document.documentElement.getAttribute("style");return document.documentElement.style.position="fixed",document.documentElement.style.top=`-${t}px`,document.documentElement.style.width=document.documentElement.style.width||"100%",document.documentElement.style.overflowY="scroll",()=>{o?document.documentElement.setAttribute("style",o):document.documentElement.removeAttribute("style"),document.documentElement.scrollTop=t}}}function W(t,o){let n;const r=l=>{l.preventDefault(),o.emit("click",l),t.closeOnClickOverlay&&o.emit("update:modelValue",!1)},i=()=>{n==null||n()};return e.watch(()=>t.modelValue,l=>{l?t.lockScroll&&(n=Q()):i()}),e.onUnmounted(i),{onClick:r}}function B(t,o,n){let r=t;return o&&(r+=`__${o}`),n&&(r+=`--${n}`),r}function N(t,o=!1){const n=o?`.devui-${t}`:`devui-${t}`;return{b:()=>B(n),e:a=>a?B(n,a):"",m:a=>a?B(n,"",a):"",em:(a,c)=>a&&c?B(n,a,c):""}}var fe="";e.defineComponent({name:"DFixedOverlay",inheritAttrs:!1,props:J,emits:["update:modelValue","click"],setup(t,o){const{modelValue:n}=e.toRefs(t),r=N("fixed-overlay"),{onClick:i}=W(t,o);return()=>e.createVNode(e.Transition,{name:r.m("fade")},{default:()=>{var l,s;return[n.value&&e.createVNode("div",e.mergeProps({class:r.b()},o.attrs,{onClick:i}),[(s=(l=o.slots).default)==null?void 0:s.call(l)])]}})}});const Z={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},offset:{type:[Number,Object],default:8},shiftOffset:{type:Number},align:{type:String,default:null},showArrow:{type:Boolean,default:!1},isArrowCenter:{type:Boolean,default:!0},clickEventBubble:{type:Boolean,default:!1}};function ee(t,o,n,r){let{x:i,y:l}=o;if(!t){const{width:s,height:a}=r;i&&n.includes("start")&&(i=12),i&&n.includes("end")&&(i=Math.round(s-24)),l&&n.includes("start")&&(l=10),l&&n.includes("end")&&(l=a-14)}return{x:i,y:l}}function te(t,o){const{position:n,showArrow:r}=e.toRefs(t),i=e.ref(),l=e.ref(),s=(m,d,p,b)=>{const{x:g,y}=ee(t.isArrowCenter,p,d,b.getBoundingClientRect()),f={top:"bottom",right:"left",bottom:"top",left:"right"}[d.split("-")[0]];Object.assign(m.style,{left:g?`${g}px`:"",top:y?`${y}px`:"",right:"",bottom:"",[f]:"-4px"})},a=async()=>{const m=t.origin,d=e.unref(i.value),p=e.unref(l.value),[b,...g]=n.value,y=[h.offset(t.offset)];y.push(g.length?h.flip({fallbackPlacements:g}):h.flip()),r.value&&y.push(h.arrow({element:l.value}));const{x:f,y:O,placement:w,middlewareData:V}=await h.computePosition(m,d,{strategy:"fixed",placement:b,middleware:y});let E=f,v=O;o("positionChange",w),Object.assign(d.style,{top:`${v}px`,left:`${E}px`}),t.showArrow&&s(p,w,V.arrow,d)},c=m=>{var p,b;const d=m.target;(d==null?void 0:d.contains((b=(p=t.origin)==null?void 0:p.$el)!=null?b:t.origin))&&a()};return e.watch(()=>t.modelValue,()=>{t.modelValue&&t.origin?(e.nextTick(a),window.addEventListener("scroll",c,!0),window.addEventListener("resize",a)):(window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",a))}),e.onUnmounted(()=>{window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",a)}),{arrowRef:l,overlayRef:i,updatePosition:a}}var me="";const $=e.defineComponent({name:"DFlexibleOverlay",inheritAttrs:!1,props:Z,emits:["update:modelValue","positionChange"],setup(t,{slots:o,attrs:n,emit:r,expose:i}){const l=N("flexible-overlay"),{clickEventBubble:s}=e.toRefs(t),{arrowRef:a,overlayRef:c,updatePosition:m}=te(t,r);return i({updatePosition:m}),()=>{var d;return t.modelValue&&e.createVNode("div",e.mergeProps({ref:c,class:l.b()},n,{onClick:e.withModifiers(()=>({}),[s.value?"":"stop"]),onPointerup:e.withModifiers(()=>({}),["stop"])}),[(d=o.default)==null?void 0:d.call(o),t.showArrow&&e.createVNode("div",{ref:a,class:l.e("arrow")},null)])}}}),oe=t=>t!==null&&typeof t=="object",ne=N("popper-trigger");function j(t){return e.h("span",{class:ne.b()},t)}function L(t){for(const o of t){if(oe(o)){if(o.type===e.Comment)continue;return o.type==="svg"||o.type===e.Text?j(o):o.type===e.Fragment?L(o.children):o}return j(o)}return null}var le=e.defineComponent({name:"DPopperTrigger",setup(t,o){const{slots:n,attrs:r}=o;return()=>{var a;const i=(a=n.default)==null?void 0:a.call(n,r),l=e.inject(R);if(!i)return null;const s=L(i);return s?e.withDirectives(e.cloneVNode(s,r),[[{mounted(c){l.value=c},updated(c){l.value=c},unmounted(){l.value=null}}]]):null}}}),pe="";let ae=1;var S=e.defineComponent({name:"DDropdown",inheritAttrs:!1,props:I,emits:["toggle"],setup(t,{slots:o,attrs:n,emit:r,expose:i}){const{visible:l,position:s,align:a,offset:c,destroyOnHide:m,shiftOffset:d,showAnimation:p,teleport:b}=e.toRefs(t),g=e.ref(),y=e.ref(),f=e.ref(),O=`dropdown_${ae++}`,w=e.ref(!1),V=e.ref("bottom"),E=N("dropdown");e.provide(R,g),Y({id:O,isOpen:w,origin:g,dropdownRef:y,props:t,emit:r}),K(O,l,w,g,y,r);const{overlayModelValue:v,overlayShowValue:P,styles:A,classes:T,handlePositionChange:M}=X(t,V,w);return e.watch(P,x=>{e.nextTick(()=>{!m.value&&x&&f.value.updatePosition()})}),i({updatePosition:()=>f.value.updatePosition()}),()=>e.createVNode(e.Fragment,null,[e.createVNode(le,null,{default:()=>{var x;return[(x=o.default)==null?void 0:x.call(o)]}}),e.createVNode(e.Teleport,{to:b.value},{default:()=>[e.createVNode(e.Transition,{name:p.value?E.m(`fade-${V.value}`):""},{default:()=>[e.withDirectives(e.createVNode($,{modelValue:v.value,"onUpdate:modelValue":x=>v.value=x,ref:f,origin:g.value,position:s.value,align:a.value,offset:c.value,shiftOffset:d==null?void 0:d.value,onPositionChange:M,"click-event-bubble":!0,class:T.value,style:A.value},{default:()=>{var x;return[e.createVNode("div",e.mergeProps({ref:y,class:E.e("menu-wrap")},n),[(x=o.menu)==null?void 0:x.call(o)])]}}),[[e.vShow,P.value]])]})]})])}});const F={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},align:{type:String,default:null},offset:{type:[Number,Object],default:4},clickOutside:{type:Function,default:()=>!0},showAnimation:{type:Boolean,default:!0},overlayClass:{type:String,default:""}};var D=e.defineComponent({name:"DDropdownMenu",inheritAttrs:!1,props:F,emits:["update:modelValue"],setup(t,{slots:o,attrs:n,emit:r}){const{modelValue:i,origin:l,position:s,align:a,offset:c,clickOutside:m,showAnimation:d,overlayClass:p}=e.toRefs(t),b=e.ref(null),g=N("dropdown");U.onClickOutside(b,w=>{var V,E;((V=m.value)==null?void 0:V.call(m))&&!((E=l==null?void 0:l.value)==null?void 0:E.contains(w.target))&&r("update:modelValue",!1)});const y=e.ref("bottom"),f=w=>{y.value=w.split("-")[0]==="top"?"top":"bottom"},O=e.computed(()=>({transformOrigin:y.value==="top"?"0% 100%":"0% 0%"}));return()=>e.createVNode(e.Teleport,{to:"body"},{default:()=>[e.createVNode(e.Transition,{name:d.value?g.m(`fade-${y.value}`):""},{default:()=>[e.createVNode($,{modelValue:i.value,"onUpdate:modelValue":w=>i.value=w,origin:l==null?void 0:l.value,position:s.value,align:a.value,offset:c.value,onPositionChange:f,class:p.value,style:O.value},{default:()=>{var w;return[e.createVNode("div",e.mergeProps({ref:b,class:g.e("menu-wrap")},n),[(w=o.default)==null?void 0:w.call(o)])]}})]})]})}}),re={title:"Dropdown \u4E0B\u62C9\u83DC\u5355",category:"\u5BFC\u822A",status:"50%",install(t){t.component(S.name,S),t.component(D.name,D)}};u.Dropdown=S,u.DropdownMenu=D,u.default=re,u.dropdownMenuProps=F,Object.defineProperty(u,"__esModule",{value:!0}),u[Symbol.toStringTag]="Module"});
@@ -20,7 +20,7 @@ var __publicField = (obj, key, value) => {
20
20
  };
21
21
  import { watch, onUnmounted, defineComponent, toRefs, createVNode, Transition, mergeProps, ref, unref, nextTick, withModifiers, inject, computed, h, render, withDirectives, resolveDirective, renderSlot, useSlots, reactive, getCurrentInstance, onMounted, provide, toRef, vShow, Teleport, isVNode } from "vue";
22
22
  import { onClickOutside } from "@vueuse/core";
23
- import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom";
23
+ import { offset, flip, arrow, computePosition } from "@floating-ui/dom";
24
24
  const editableSelectProps = {
25
25
  modelValue: {
26
26
  type: [String, Number]
@@ -229,16 +229,6 @@ const flexibleOverlayProps = {
229
229
  default: false
230
230
  }
231
231
  };
232
- function getScrollParent(element) {
233
- const overflowRegex = /(auto|scroll|hidden)/;
234
- for (let parent = element; parent = parent.parentElement; parent.parentElement !== document.body) {
235
- const style = window.getComputedStyle(parent);
236
- if (overflowRegex.test(style.overflow + style.overflowX + style.overflowY)) {
237
- return parent;
238
- }
239
- }
240
- return window;
241
- }
242
232
  function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
243
233
  let { x, y } = point;
244
234
  if (!isArrowCenter) {
@@ -259,9 +249,9 @@ function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
259
249
  return { x, y };
260
250
  }
261
251
  function useOverlay(props, emit) {
252
+ const { position, showArrow } = toRefs(props);
262
253
  const overlayRef = ref();
263
254
  const arrowRef = ref();
264
- let originParent = null;
265
255
  const updateArrowPosition = (arrowEl, placement, point, overlayEl) => {
266
256
  const { x, y } = adjustArrowPosition(props.isArrowCenter, point, placement, overlayEl.getBoundingClientRect());
267
257
  const staticSide = {
@@ -282,51 +272,42 @@ function useOverlay(props, emit) {
282
272
  const hostEl = props.origin;
283
273
  const overlayEl = unref(overlayRef.value);
284
274
  const arrowEl = unref(arrowRef.value);
285
- const middleware = [
286
- offset(props.offset),
287
- autoPlacement({
288
- alignment: props.align,
289
- allowedPlacements: props.position
290
- })
291
- ];
292
- props.showArrow && middleware.push(arrow({ element: arrowEl }));
293
- props.shiftOffset !== void 0 && middleware.push(shift());
294
- if (!overlayEl) {
295
- return;
275
+ const [mainPosition, ...fallbackPosition] = position.value;
276
+ const middleware = [offset(props.offset)];
277
+ middleware.push(fallbackPosition.length ? flip({ fallbackPlacements: fallbackPosition }) : flip());
278
+ if (showArrow.value) {
279
+ middleware.push(arrow({ element: arrowRef.value }));
296
280
  }
297
281
  const { x, y, placement, middlewareData } = await computePosition(hostEl, overlayEl, {
298
282
  strategy: "fixed",
283
+ placement: mainPosition,
299
284
  middleware
300
285
  });
301
286
  let applyX = x;
302
287
  let applyY = y;
303
- if (props.shiftOffset !== void 0) {
304
- const { x: shiftX, y: shiftY } = middlewareData.shift;
305
- shiftX < 0 && (applyX -= props.shiftOffset);
306
- shiftX > 0 && (applyX += props.shiftOffset);
307
- shiftY < 0 && (applyY -= props.shiftOffset);
308
- shiftY > 0 && (applyY += props.shiftOffset);
309
- }
310
288
  emit("positionChange", placement);
311
289
  Object.assign(overlayEl.style, { top: `${applyY}px`, left: `${applyX}px` });
312
290
  props.showArrow && updateArrowPosition(arrowEl, placement, middlewareData.arrow, overlayEl);
313
291
  };
292
+ const scrollCallback = (e) => {
293
+ var _a, _b;
294
+ const scrollElement = e.target;
295
+ if (scrollElement == null ? void 0 : scrollElement.contains((_b = (_a = props.origin) == null ? void 0 : _a.$el) != null ? _b : props.origin)) {
296
+ updatePosition();
297
+ }
298
+ };
314
299
  watch(() => props.modelValue, () => {
315
300
  if (props.modelValue && props.origin) {
316
- originParent = getScrollParent(props.origin);
317
301
  nextTick(updatePosition);
318
- originParent == null ? void 0 : originParent.addEventListener("scroll", updatePosition);
319
- originParent !== window && window.addEventListener("scroll", updatePosition);
302
+ window.addEventListener("scroll", scrollCallback, true);
320
303
  window.addEventListener("resize", updatePosition);
321
304
  } else {
322
- originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
323
- originParent !== window && window.removeEventListener("scroll", updatePosition);
305
+ window.removeEventListener("scroll", scrollCallback, true);
324
306
  window.removeEventListener("resize", updatePosition);
325
307
  }
326
308
  });
327
309
  onUnmounted(() => {
328
- originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
329
- originParent !== window && window.removeEventListener("scroll", updatePosition);
310
+ window.removeEventListener("scroll", scrollCallback, true);
330
311
  window.removeEventListener("resize", updatePosition);
331
312
  });
332
313
  return { arrowRef, overlayRef, updatePosition };
@@ -4489,7 +4470,7 @@ var lodash = { exports: {} };
4489
4470
  var delay = baseRest(function(func, wait, args) {
4490
4471
  return baseDelay(func, toNumber(wait) || 0, args);
4491
4472
  });
4492
- function flip(func) {
4473
+ function flip2(func) {
4493
4474
  return createWrap(func, WRAP_FLIP_FLAG);
4494
4475
  }
4495
4476
  function memoize(func, resolver) {
@@ -5613,7 +5594,7 @@ var lodash = { exports: {} };
5613
5594
  lodash2.flatten = flatten;
5614
5595
  lodash2.flattenDeep = flattenDeep;
5615
5596
  lodash2.flattenDepth = flattenDepth;
5616
- lodash2.flip = flip;
5597
+ lodash2.flip = flip2;
5617
5598
  lodash2.flow = flow;
5618
5599
  lodash2.flowRight = flowRight;
5619
5600
  lodash2.fromPairs = fromPairs;