@shtabapp/ui-kit 1.78.4 → 1.80.0

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 (102) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{SAvatar-hWbsODUa.js → SAvatar-6uaisUHm.js} +23 -21
  3. package/dist/{SAvatar-ClmtSIFg.cjs → SAvatar-BQNqFdkk.cjs} +1 -1
  4. package/dist/{SAvatarGroup-By8oMNTe.cjs → SAvatarGroup-D27squmU.cjs} +1 -1
  5. package/dist/{SAvatarGroup-CSSCQKdH.js → SAvatarGroup-DnVhY7I1.js} +1 -1
  6. package/dist/SBadge-Dn87LB9z.cjs +1 -0
  7. package/dist/{SBadge-BDxQJh6c.js → SBadge-Du9iIiXS.js} +4 -2
  8. package/dist/SButton-B3o80WMR.cjs +1 -0
  9. package/dist/{SButton-DIWMMCSc.js → SButton-D-dmK8Cm.js} +47 -34
  10. package/dist/{SChip-C6d9oIYL.js → SChip-C6Z1VRf9.js} +1 -1
  11. package/dist/{SChip-BCB1bvua.cjs → SChip-Cr6wNKd7.cjs} +1 -1
  12. package/dist/{SColorPicker-Dac8mDye.cjs → SColorPicker--sBL2SBq.cjs} +1 -1
  13. package/dist/{SColorPicker-CIAkM4kx.js → SColorPicker-D2072gdX.js} +3 -3
  14. package/dist/SDropdown-B_nsm3Jf.cjs +1 -0
  15. package/dist/SDropdown-aWjZrahp.js +541 -0
  16. package/dist/{SInput-CGlUBCkW.js → SInput-D2pCcaym.js} +1 -1
  17. package/dist/{SInput-fT-S-Tko.cjs → SInput-DG9R9tJC.cjs} +1 -1
  18. package/dist/{SList-BuuCfuHg.js → SList-DKstFJu1.js} +1 -1
  19. package/dist/{SList-Vg9nx1oe.cjs → SList-_VnusDWn.cjs} +1 -1
  20. package/dist/SListItem-B7RIawMl.cjs +1 -0
  21. package/dist/SListItem-Bw0OXPVk.js +231 -0
  22. package/dist/{SPhotoEdit-B4ujF5Dh.cjs → SPhotoEdit-C1K1n0ti.cjs} +1 -1
  23. package/dist/{SPhotoEdit-BxxycqvA.js → SPhotoEdit-eKRRevtl.js} +1 -1
  24. package/dist/SSelect-91iBEAHR.cjs +1 -0
  25. package/dist/{SSelect-BznJn8Q8.js → SSelect-CKw3a1AD.js} +238 -230
  26. package/dist/STable-CdMVPiYt.cjs +1 -0
  27. package/dist/{STable-BgbWclBb.js → STable-Dbr1oX01.js} +1032 -1002
  28. package/dist/{STabs-BYbsRtvi.js → STabs-DhwF2GvF.js} +1 -1
  29. package/dist/{STabs-DDP-2p6T.cjs → STabs-yf2Mtaji.cjs} +1 -1
  30. package/dist/{STag-DWjv_Za8.js → STag-BCGC8smg.js} +1 -1
  31. package/dist/{STag-nqzlv8OZ.cjs → STag-DBerzc3o.cjs} +1 -1
  32. package/dist/{STagGroup-DEPpEU5C.js → STagGroup-B2FeOTSD.js} +1 -1
  33. package/dist/{STagGroup-CYEI9OXO.cjs → STagGroup-GecKyBlJ.cjs} +1 -1
  34. package/dist/components/SAvatar/SAvatar.vue.d.ts.map +1 -1
  35. package/dist/components/SBadge/SBadge.vue.d.ts.map +1 -1
  36. package/dist/components/SButton/SButton.types.d.ts +5 -1
  37. package/dist/components/SButton/SButton.types.d.ts.map +1 -1
  38. package/dist/components/SButton/SButton.vue.d.ts.map +1 -1
  39. package/dist/components/SButton/utils/useButtonBadge.d.ts +2 -1
  40. package/dist/components/SButton/utils/useButtonBadge.d.ts.map +1 -1
  41. package/dist/components/SDropdown/SDropdown.types.d.ts +16 -1
  42. package/dist/components/SDropdown/SDropdown.types.d.ts.map +1 -1
  43. package/dist/components/SDropdown/SDropdown.vue.d.ts +2 -2
  44. package/dist/components/SDropdown/SDropdown.vue.d.ts.map +1 -1
  45. package/dist/components/SDropdown/utils/dropdownFocusables.d.ts +9 -0
  46. package/dist/components/SDropdown/utils/dropdownFocusables.d.ts.map +1 -0
  47. package/dist/components/SDropdown/utils/useDropdownFocus.d.ts +31 -0
  48. package/dist/components/SDropdown/utils/useDropdownFocus.d.ts.map +1 -0
  49. package/dist/components/SListItem/SListItem.types.d.ts +5 -3
  50. package/dist/components/SListItem/SListItem.types.d.ts.map +1 -1
  51. package/dist/components/SListItem/SListItem.vue.d.ts.map +1 -1
  52. package/dist/components/SSelect/SSelect.vue.d.ts.map +1 -1
  53. package/dist/components/STable/STable.vue.d.ts.map +1 -1
  54. package/dist/components/STable/utils/useTableGridFocus.d.ts +5 -2
  55. package/dist/components/STable/utils/useTableGridFocus.d.ts.map +1 -1
  56. package/dist/components/STable/utils/useTableGridKeyboard.d.ts.map +1 -1
  57. package/dist/components/SToastProvider/SToastProvider.vue.d.ts +1 -1
  58. package/dist/components/SToastProvider/SToastProvider.vue.d.ts.map +1 -1
  59. package/dist/entries/avatar-group.cjs +1 -1
  60. package/dist/entries/avatar-group.js +1 -1
  61. package/dist/entries/avatar.cjs +1 -1
  62. package/dist/entries/avatar.js +1 -1
  63. package/dist/entries/badge.cjs +1 -1
  64. package/dist/entries/badge.js +1 -1
  65. package/dist/entries/button.cjs +1 -1
  66. package/dist/entries/button.js +1 -1
  67. package/dist/entries/chip.cjs +1 -1
  68. package/dist/entries/chip.js +1 -1
  69. package/dist/entries/color-picker.cjs +1 -1
  70. package/dist/entries/color-picker.js +1 -1
  71. package/dist/entries/dropdown.cjs +1 -1
  72. package/dist/entries/dropdown.js +1 -1
  73. package/dist/entries/input.cjs +1 -1
  74. package/dist/entries/input.js +1 -1
  75. package/dist/entries/list-item.cjs +1 -1
  76. package/dist/entries/list-item.js +1 -1
  77. package/dist/entries/list.cjs +1 -1
  78. package/dist/entries/list.js +1 -1
  79. package/dist/entries/photo-edit.cjs +1 -1
  80. package/dist/entries/photo-edit.js +1 -1
  81. package/dist/entries/select.cjs +1 -1
  82. package/dist/entries/select.js +1 -1
  83. package/dist/entries/table.cjs +1 -1
  84. package/dist/entries/table.js +1 -1
  85. package/dist/entries/tabs.cjs +1 -1
  86. package/dist/entries/tabs.js +1 -1
  87. package/dist/entries/tag-group.cjs +1 -1
  88. package/dist/entries/tag-group.js +2 -2
  89. package/dist/entries/tag.cjs +1 -1
  90. package/dist/entries/tag.js +1 -1
  91. package/dist/index.cjs +1 -1
  92. package/dist/index.js +447 -423
  93. package/dist/uikit-components.css +1 -1
  94. package/package.json +3 -3
  95. package/dist/SBadge-d1GOPFP-.cjs +0 -1
  96. package/dist/SButton-BCgdXE_B.cjs +0 -1
  97. package/dist/SDropdown-CPfoNHbg.cjs +0 -1
  98. package/dist/SDropdown-DvPW3_WP.js +0 -400
  99. package/dist/SListItem-CDlsjhA3.js +0 -227
  100. package/dist/SListItem-DMjtJXxV.cjs +0 -1
  101. package/dist/SSelect-CB2XQ4dU.cjs +0 -1
  102. package/dist/STable-CNl_VYLc.cjs +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shtabapp/ui-kit",
3
- "version": "1.78.4",
3
+ "version": "1.80.0",
4
4
  "description": "Vue 3 component library by Shtab — 30+ typed components, design tokens, light/dark themes",
5
5
  "keywords": [
6
6
  "shtab",
@@ -279,8 +279,8 @@
279
279
  "dependencies": {
280
280
  "chart.js": "^4.5.0",
281
281
  "vue-i18n": "^9.14.5",
282
- "@shtabapp/ui-kit-tokens": "^1.23.0",
283
- "@shtabapp/ui-kit-primitives": "^1.36.0"
282
+ "@shtabapp/ui-kit-primitives": "^1.36.0",
283
+ "@shtabapp/ui-kit-tokens": "^1.23.0"
284
284
  },
285
285
  "devDependencies": {
286
286
  "@atlaskit/pragmatic-drag-and-drop": "^3.0.0",
@@ -1 +0,0 @@
1
- let e=require("vue"),t=require("@shtabapp/ui-kit-primitives");var n=function(e){return e.DANGER=`danger`,e.MAIN=`main`,e.SUCCESS=`success`,e.WARNING=`warning`,e.GRAY=`gray`,e.WHITE=`white`,e.BILLING=`billing`,e.DISABLED=`disabled`,e}({}),r=function(e){return e.SMALL=`s`,e.MEDIUM=`m`,e.LARGE=`l`,e}({}),i=function(e){return e.TOP_END=`top-end`,e.TOP_START=`top-start`,e.BOTTOM_END=`bottom-end`,e.BOTTOM_START=`bottom-start`,e}({}),a={key:0,class:`s-ui-badge-anchor`},o=[`aria-label`],s={key:1,class:`s-ui-badge__dot`},c={key:2,class:`s-ui-badge__label s-ui-typography-label-10-medium`},l=[`aria-label`],u={key:1,class:`s-ui-badge__dot`},d={key:2,class:`s-ui-badge__label s-ui-typography-label-10-medium`},f=16,p=(0,e.defineComponent)({__name:`SBadge`,props:{anchored:{type:Boolean,default:!1},color:{default:()=>n.DANGER},value:{},max:{},label:{},icon:{},size:{default:()=>r.SMALL},placement:{default:()=>i.TOP_END},offsetX:{default:0},offsetY:{default:0}},setup(n){let i=(0,e.useSlots)(),p=(0,e.computed)(()=>!!(i.default||n.anchored)),m=(0,e.computed)(()=>typeof n.value==`number`),h=(0,e.computed)(()=>typeof n.value==`number`?n.max&&n.value>n.max?`${n.max}+`:String(n.value):``),g=(0,e.computed)(()=>h.value.length===1),_=(0,e.computed)(()=>!!n.icon),v=(0,e.computed)(()=>!_.value&&!m.value),y=(0,e.computed)(()=>[`s-ui-badge--color-${n.color}`,{"s-ui-badge--anchored":p.value,"s-ui-badge--single":g.value&&!_.value,"s-ui-badge--with-dot":v.value,"s-ui-badge--with-icon":_.value,[`s-ui-badge--size-${n.size}`]:n.size!==r.SMALL||_.value||v.value,[`s-ui-badge--placement-${n.placement}`]:p.value}]),b=(0,e.computed)(()=>{if(p.value)return{"--s-ui-badge-offset-x":`${n.offsetX}px`,"--s-ui-badge-offset-y":`${n.offsetY}px`}}),x=(0,e.computed)(()=>{if(n.label)return n.label;if(n.icon)return n.icon;if(h.value)return h.value});return(r,p)=>(0,e.unref)(i).default?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,a,[(0,e.renderSlot)(r.$slots,`default`),(0,e.createElementVNode)(`span`,{class:(0,e.normalizeClass)([`s-ui-badge`,y.value]),style:(0,e.normalizeStyle)(b.value),"aria-label":x.value},[n.icon?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.SIcon),{key:0,class:`s-ui-badge__icon`,name:n.icon,size:f},null,8,[`name`])):v.value?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,s)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,c,(0,e.toDisplayString)(h.value),1))],14,o)])):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:1,class:(0,e.normalizeClass)([`s-ui-badge`,y.value]),style:(0,e.normalizeStyle)(b.value),"aria-label":x.value},[n.icon?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.SIcon),{key:0,class:`s-ui-badge__icon`,name:n.icon,size:f},null,8,[`name`])):v.value?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,u)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,d,(0,e.toDisplayString)(h.value),1))],14,l))}});Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
@@ -1 +0,0 @@
1
- const e=require("./SBadge-d1GOPFP-.cjs"),t=require("./context-kCi2xRHY.cjs"),n=require("./useSelectionGroup-NJvi3hNo.cjs"),r=require("./useSelectLink-DZIAhQ2J.cjs"),i=require("./useLink-1LLWpdDZ.cjs");let a=require("vue"),o=require("@shtabapp/ui-kit-primitives");var s=function(e){return e.MAJOR=`major`,e.MINOR=`minor`,e.SURFACE=`surface`,e.OUTLINED=`outlined`,e.BARE=`bare`,e}({}),c=function(e){return e.MAIN=`main`,e.NEUTRAL=`neutral`,e.DANGER=`danger`,e.SUCCESS=`success`,e.BILLING=`billing`,e}({}),l=function(e){return e.SMALL=`small`,e.MEDIUM=`medium`,e.LARGE=`large`,e}({}),u={offsetX:1,offsetY:-1},d={[l.SMALL]:{offsetX:-6,offsetY:6},[l.MEDIUM]:{offsetX:-7,offsetY:7},[l.LARGE]:{offsetX:-8,offsetY:8}},f={[l.SMALL]:e.i.SMALL,[l.MEDIUM]:e.i.SMALL,[l.LARGE]:e.i.MEDIUM},p=({color:t,counterValue:n})=>{if(typeof n==`number`)return{anchored:!0,color:t,offsetX:u.offsetX,offsetY:u.offsetY,placement:e.r.TOP_END,size:e.i.MEDIUM,value:n}},m=({buttonSize:t,color:n,indicator:r})=>{if(!r)return;let i=d[t];return{anchored:!0,color:n,offsetX:i.offsetX,offsetY:i.offsetY,placement:e.r.TOP_END,size:f[t]}},h=({badgeColor:t,counter:n,indicator:r,size:i})=>({buttonBadgeProps:(0,a.computed)(()=>{let o=(0,a.toValue)(t)||e.n.MAIN;return p({color:o,counterValue:(0,a.toValue)(n)})||m({buttonSize:(0,a.toValue)(i),color:o,indicator:(0,a.toValue)(r)})})}),g=[`aria-hidden`],_={key:0,class:`s-ui-button__spinner`,"aria-hidden":`true`},v=(0,a.defineComponent)({inheritAttrs:!1,__name:`SButton`,props:{appearance:{},badgeColor:{},counter:{},disabled:{type:Boolean,default:!1},icon:{},iconLeft:{},iconRight:{},indicator:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{},value:{},variant:{},link:{},exact:{type:Boolean,default:!1},replace:{type:Boolean,default:!1}},setup(u){let d=(0,a.inject)(t.t,null),f=(0,a.useAttrs)(),p=(0,a.computed)(()=>n.a(u.appearance,d?(0,a.toValue)(d.appearance):void 0,s.MAJOR)),m=(0,a.computed)(()=>n.a(u.variant,d?(0,a.toValue)(d.variant):void 0,c.MAIN)),v=(0,a.computed)(()=>n.a(u.size,d?(0,a.toValue)(d.size):void 0,l.MEDIUM)),y=(0,a.computed)(()=>u.disabled||!!(d&&(0,a.toValue)(d.disabled))),b=(0,a.useTemplateRef)(`buttonRootRef`),{buttonBadgeProps:x}=h({badgeColor:()=>u.badgeColor,counter:()=>u.counter,indicator:()=>u.indicator,size:()=>v.value}),S=i.t(()=>u.link,()=>u.exact,()=>u.replace),C=S.linkPresentation;r.t({isRouterLink:S.isRouterLink,isActive:S.isActive,group:()=>d,value:()=>u.value});let w=(0,a.computed)(()=>{let e=C.value;return e.mode===`none`?`button`:e.rootTag}),T=(0,a.computed)(()=>w.value===`button`),E=(0,a.computed)(()=>y.value||u.loading),D=r.n({group:d,value:()=>u.value,el:b,disabled:y,interactive:()=>!E.value}),O=(0,a.computed)(()=>S.isRouterLink.value?S.isActive.value:D.isActive.value),k=(0,a.computed)(()=>[`s-ui-button`,`s-ui-button--tab-focus`,`s-ui-button--appearance-${p.value}`,`s-ui-button--variant-${m.value}`,`s-ui-button--size-${v.value}`,{"s-ui-button--disabled":y.value,"s-ui-button--loading":u.loading,"s-ui-button--icon-only":u.icon,"s-ui-button--full-width":u.fullWidth,"s-ui-button--active":O.value,"s-ui-button--link":C.value.mode!==`none`}]),A=(0,a.computed)(()=>({disabled:T.value?E.value:void 0,"aria-busy":u.loading?!0:void 0,role:D.ariaChecked.value?`radio`:void 0,"aria-pressed":D.ariaPressed.value,"aria-checked":D.ariaChecked.value,tabindex:D.tabIndex.value,...i.n(C.value,{replace:u.replace})})),j=(0,a.computed)(()=>({...A.value,...f})),M={[l.SMALL]:`s-ui-typography-label-12-medium`,[l.MEDIUM]:`s-ui-typography-label-14-medium`,[l.LARGE]:`s-ui-typography-label-16-medium`},N=(0,a.computed)(()=>M[v.value]),P={[l.SMALL]:16,[l.MEDIUM]:20,[l.LARGE]:24},F=(0,a.computed)(()=>P[v.value]),I=(0,a.computed)(()=>y.value||u.loading?!1:m.value===c.BILLING&&p.value!==s.MAJOR),L=(0,a.computed)(()=>m.value===c.BILLING&&p.value!==s.MAJOR),R=e=>{if(!E.value){if(S.isRouterLink.value&&(e.key===`Enter`||e.key===` `||e.key===`Spacebar`)){e.preventDefault(),S.navigate();return}D.handleKeydown(e)}},z=e=>{if(E.value){e.preventDefault(),e.stopPropagation();return}S.isRouterLink.value||D.handleClick()};return(t,n)=>((0,a.openBlock)(),(0,a.createBlock)((0,a.resolveDynamicComponent)(w.value),(0,a.mergeProps)({ref_key:`buttonRootRef`,ref:b,class:k.value},j.value,{onClick:z,onKeydown:R}),{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`span`,{class:`s-ui-button__inner`,"aria-hidden":u.loading?!0:void 0},[u.icon?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.SIcon),{key:0,name:u.icon,size:F.value,billing:I.value},null,8,[`name`,`size`,`billing`])):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:1},[u.iconLeft?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.SIcon),{key:0,name:u.iconLeft,size:F.value,billing:I.value},null,8,[`name`,`size`,`billing`])):(0,a.createCommentVNode)(``,!0),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)([`s-ui-button__label`,N.value])},[(0,a.renderSlot)(t.$slots,`default`)],2),u.iconRight?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.SIcon),{key:1,name:u.iconRight,size:F.value,billing:I.value},null,8,[`name`,`size`,`billing`])):(0,a.createCommentVNode)(``,!0)],64))],8,g),u.loading?((0,a.openBlock)(),(0,a.createElementBlock)(`span`,_,[(0,a.createVNode)((0,a.unref)(o.SSpinner),{billing:L.value,size:F.value},null,8,[`billing`,`size`])])):(0,a.createCommentVNode)(``,!0),(0,a.unref)(x)?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(e.t),(0,a.normalizeProps)((0,a.mergeProps)({key:1},(0,a.unref)(x))),null,16)):(0,a.createCommentVNode)(``,!0)]),_:3},16,[`class`]))}});Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return v}});
@@ -1 +0,0 @@
1
- const e=require("./useFloatingOverlay-CwGCMrig.cjs");let t=require("vue"),n=require("@shtabapp/ui-kit-primitives"),r=require("@vueuse/core");var i=768,a=e=>{let n=(0,t.ref)(e.value),r=(0,t.ref)(e.value);return(0,t.watch)(e,e=>{if(e){n.value=!0,r.value=!0;return}n.value=!1},{flush:`sync`}),{isPanelShown:n,isPanelActive:r,handlePanelAfterLeave:()=>{e.value||(r.value=!1)}}},o=(e,n)=>{let i=(0,r.useMediaQuery)((0,t.computed)(()=>`(max-width: ${((0,t.toValue)(n)||768)-.02}px)`));return(0,t.computed)(()=>(0,t.toValue)(e)&&i.value)},s=Symbol(`SDropdown`),c=e=>{let n=(0,t.inject)(s,null),r=(0,t.shallowReactive)(new Set),i=(0,t.computed)(()=>[...r].filter(e=>e.isOpen())),a=(0,t.computed)(()=>i.value.length>0),o=(0,t.computed)(()=>i.value.flatMap(e=>e.getElements())),c={isOpen:()=>(0,t.toValue)(e.open),getElements:()=>{let n=(0,t.toValue)(e.element);return n?[n,...o.value]:o.value}};return(0,t.provide)(s,{registerChild:e=>{r.add(e)},unregisterChild:e=>{r.delete(e)}}),n&&(n.registerChild(c),(0,t.onScopeDispose)(()=>n.unregisterChild(c))),{hasOpenChild:a,descendantElements:o}},l=e=>{if(!e)return null;let t=e.getBoundingClientRect();if(t.width>0||t.height>0)return e;let n=e.firstElementChild;return n instanceof HTMLElement?n:e},u={OVERDRAG_LIMIT:50,CLOSE_DISTANCE_RATIO:.3,CLOSE_DISTANCE_LIMIT:140,CLOSE_VELOCITY:.5,SETTLE_TIMEOUT:400,INTERACTIVE_SELECTOR:`button, a[href], input, select, textarea, [role="button"], [contenteditable="true"]`},d=e=>{let n=(0,t.shallowRef)(0),i=(0,t.shallowRef)(!1),a=(0,t.shallowRef)(!1),o=null,s=0,c=0,l=0,d=0,f=0,p,m=(0,t.computed)(()=>i.value||a.value),h=()=>{clearTimeout(p),p=void 0,a.value=!1},g=()=>{a.value=!0,clearTimeout(p),p=setTimeout(h,u.SETTLE_TIMEOUT)},_=()=>{o=null,n.value=0,i.value=!1,h()},v=()=>(0,t.toValue)(e.popup)?.offsetHeight??0,y=()=>{let e=d-s;if(e<=0)return!1;let t=f-l;return(t>0?(d-c)/t:0)>=u.CLOSE_VELOCITY?!0:e>=Math.min(v()*u.CLOSE_DISTANCE_RATIO,u.CLOSE_DISTANCE_LIMIT)},b=e=>{o===null&&(e.pointerType===`mouse`&&e.button!==0||e.target instanceof Element&&e.target.closest(u.INTERACTIVE_SELECTOR)||(o=e.pointerId,s=e.clientY,d=e.clientY,c=e.clientY,f=e.timeStamp,l=e.timeStamp,h(),i.value=!0))},x=e=>{o===e.pointerId&&(c=d,l=f,d=e.clientY,f=e.timeStamp,n.value=Math.max(e.clientY-s,-u.OVERDRAG_LIMIT))},S=t=>{if(o===t.pointerId){if(o=null,i.value=!1,y()){a.value=!0,n.value=v()+u.OVERDRAG_LIMIT,e.onClose();return}if(n.value===0){h();return}g(),n.value=0}};return(0,r.useEventListener)(()=>(0,t.toValue)(e.handle),`pointerdown`,b),(0,r.useEventListener)(window,`pointermove`,x),(0,r.useEventListener)(window,`pointerup`,S),(0,r.useEventListener)(window,`pointercancel`,S),(0,r.useEventListener)(()=>(0,t.toValue)(e.popup),`transitionend`,e=>{e.propertyName!==`transform`||i.value||n.value!==0||h()}),(0,t.onScopeDispose)(()=>{clearTimeout(p)}),{isActive:m,popupStyles:(0,t.computed)(()=>{if(m.value)return{transform:`translate3d(0, ${n.value}px, 0)`,transition:a.value?`transform var(--s-ui-transition-duration-slow) var(--s-ui-transition-easing-standard)`:`none`}}),reset:_}},f=[`aria-label`],p={class:`s-ui-dropdown-sheet__side`},m={class:`s-ui-dropdown-sheet__title`},h={class:`s-ui-dropdown-sheet__side s-ui-dropdown-sheet__side--end`},g=[`id`],_=(0,t.defineComponent)({__name:`SDropdownSheet`,props:{open:{type:Boolean},title:{default:``},dismissOnOverlayClick:{type:Boolean,default:!0},dismissOnEscape:{type:Boolean,default:!0},hasOpenDescendant:{type:Boolean,default:!1},contentId:{}},emits:[`close`],setup(i,{expose:a,emit:o}){let s=o,{t:c}=(0,n.useUiKitI18n)(),l=(0,t.useTemplateRef)(`overlayRef`),u=(0,t.useTemplateRef)(`popupRef`),_=(0,t.useTemplateRef)(`headerRef`),v=()=>s(`close`),{isActive:y,popupStyles:b,reset:x}=d({handle:_,popup:u,onClose:v}),S=(0,r.useScrollLock)(()=>typeof document>`u`?null:document.body),C=()=>{i.dismissOnOverlayClick&&v()},w=e=>{y.value&&e.stopPropagation()},T=()=>x(),E=null,D=()=>{let e=document.activeElement;E=e instanceof HTMLElement?e:null},O=async()=>{await(0,t.nextTick)();let e=u.value;!e||e.contains(document.activeElement)||e.focus({preventScroll:!0})},k=()=>{let e=E,t=!!u.value?.contains(document.activeElement);E=null,!(!t||!e?.isConnected)&&e.focus({preventScroll:!0})};return(0,t.watch)(()=>i.open,e=>{if(S.value=e,e){D(),O();return}k()},{immediate:!0}),e.n({open:()=>i.open,enabled:()=>i.dismissOnEscape,hasOpenDescendant:()=>i.hasOpenDescendant,onDismiss:v}),(0,t.onBeforeUnmount)(()=>{S.value=!1}),a({overlayElement:l}),(e,n)=>((0,t.openBlock)(),(0,t.createBlock)(t.Transition,{name:`s-ui-dropdown-sheet`,onAfterLeave:T},{default:(0,t.withCtx)(()=>[i.open?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,ref_key:`overlayRef`,ref:l,class:`s-ui-dropdown-sheet`,onClick:C},[(0,t.createElementVNode)(`div`,{ref_key:`popupRef`,ref:u,class:`s-ui-dropdown-sheet__popup`,style:(0,t.normalizeStyle)((0,t.unref)(b)),role:`dialog`,"aria-modal":`true`,"aria-label":i.title||(0,t.unref)(c)(`dropdown.sheet`),tabindex:`-1`,onClickCapture:w,onClick:n[0]||=(0,t.withModifiers)(()=>{},[`stop`])},[(0,t.createElementVNode)(`header`,{ref_key:`headerRef`,ref:_,class:`s-ui-dropdown-sheet__header`},[n[1]||=(0,t.createElementVNode)(`span`,{class:`s-ui-dropdown-sheet__handle`,"aria-hidden":`true`},null,-1),(0,t.createElementVNode)(`div`,p,[(0,t.renderSlot)(e.$slots,`header-left`)]),(0,t.createElementVNode)(`div`,m,(0,t.toDisplayString)(i.title),1),(0,t.createElementVNode)(`div`,h,[(0,t.renderSlot)(e.$slots,`header-right`)])],512),(0,t.createElementVNode)(`div`,{id:i.contentId,class:`s-ui-dropdown-sheet__content`},[(0,t.renderSlot)(e.$slots,`default`)],8,g)],44,f)],512)):(0,t.createCommentVNode)(``,!0)]),_:3}))}}),v=[`id`],y=[`data-placement`],b={class:`s-ui-dropdown__content`},x=(0,t.defineComponent)({inheritAttrs:!1,__name:`SDropdown`,props:(0,t.mergeModels)({placement:{default:()=>e.s.BOTTOM_START},offset:{default:8},flip:{type:Boolean,default:!0},shift:{type:Boolean,default:!0},matchReferenceWidth:{type:Boolean,default:!1},fitViewport:{type:Boolean,default:!1},surfaceClass:{},teleportTo:{type:[String,Boolean],default:`body`},dismissOnClickOutside:{type:Boolean,default:!0},dismissOnEscape:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},reference:{default:null},contentId:{},viewportPadding:{default:8},boundary:{default:()=>e.o.CLIPPING_ANCESTORS},block:{type:Boolean,default:!1},arrow:{type:Boolean,default:!1},showOnHover:{type:Boolean,default:!1},hoverLeaveDelay:{default:100},sheet:{type:Boolean,default:!0},sheetBreakpoint:{default:()=>768},sheetTitle:{default:``}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:[`update:modelValue`],setup(n,{expose:i}){let s=(0,t.useModel)(n,`modelValue`),u=o(()=>n.sheet,()=>n.sheetBreakpoint),{isPanelShown:d,isPanelActive:f,handlePanelAfterLeave:p}=a(s),m=e=>{s.value=e},h=()=>m(!1),g=(0,t.useSlots)(),x=(0,t.useTemplateRef)(`triggerWrapperRef`),S=(0,t.useTemplateRef)(`panelRef`),C=(0,t.useTemplateRef)(`sheetRef`),{hasOpenChild:w,descendantElements:T}=c({open:s,element:(0,t.computed)(()=>u.value?C.value?.overlayElement??null:S.value)}),E=(0,t.useId)(),D=(0,t.useId)(),O=(0,t.computed)(()=>n.contentId??E),k=(0,t.computed)(()=>g.trigger?l(x.value):n.reference),A=(0,t.computed)(()=>n.teleportTo!==!1),j=(0,t.computed)(()=>n.teleportTo===!1?`body`:n.teleportTo),M=e.s.BOTTOM_START,N=()=>{n.disabled||m(!0)},P=()=>{n.disabled||(s.value=!s.value)},F=(0,t.computed)(()=>({id:D,"aria-expanded":s.value,"aria-haspopup":`dialog`,"aria-controls":O.value})),{panelStyles:I,panelMaxHeight:L,resolvedPlacement:R,arrowStyles:z,isArrowOverflow:B,isPositionReady:V,updatePosition:H}=e.t({open:()=>f.value&&!u.value,onOpenChange:m,reference:()=>k.value,panel:()=>S.value,placement:()=>n.placement,offset:()=>n.offset,flip:()=>n.flip,shift:()=>n.shift,matchReferenceWidth:()=>n.matchReferenceWidth,fitViewport:()=>n.fitViewport,dismissOnClickOutside:()=>n.dismissOnClickOutside,dismissOnEscape:()=>n.dismissOnEscape,viewportPadding:()=>n.viewportPadding,arrow:()=>n.arrow,boundary:()=>n.boundary,clickOutsideIgnore:T,hasOpenDescendant:w}),U=(0,t.computed)(()=>n.showOnHover&&!u.value),W=(0,t.computed)(()=>U.value?e.r(k.value):null),G=(0,t.computed)(()=>U.value?S.value:null),K=(0,r.useElementHover)(W,{delayLeave:n.hoverLeaveDelay}),q=(0,r.useElementHover)(G,{delayLeave:n.hoverLeaveDelay});(0,t.watch)([K,q,w,U,()=>n.disabled],()=>{if(U.value){if(n.disabled){m(!1);return}m(K.value||q.value||w.value)}});let J=(0,t.computed)(()=>!!L.value),Y=(0,t.computed)(()=>{if(L.value)return{maxHeight:`${L.value}px`}});return(0,t.watch)(()=>n.disabled,e=>{e&&s.value&&(s.value=!1)}),i({updatePosition:H,show:N,close:h,toggle:P}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,[(0,t.unref)(g).trigger?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,(0,t.mergeProps)({key:0,ref_key:`triggerWrapperRef`,ref:x,class:[`s-ui-dropdown`,{"s-ui-dropdown--block":n.block}]},e.$attrs),[(0,t.renderSlot)(e.$slots,`trigger`,{open:s.value,toggle:P,close:h,isSheet:(0,t.unref)(u),triggerProps:F.value})],16)):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(),(0,t.createBlock)(t.Teleport,{to:j.value,disabled:!A.value},[(0,t.unref)(u)?((0,t.openBlock)(),(0,t.createBlock)(_,{key:0,ref_key:`sheetRef`,ref:C,open:s.value,title:n.sheetTitle,"dismiss-on-overlay-click":n.dismissOnClickOutside,"dismiss-on-escape":n.dismissOnEscape,"has-open-descendant":(0,t.unref)(w),"content-id":O.value,onClose:h},{"header-left":(0,t.withCtx)(()=>[(0,t.renderSlot)(e.$slots,`sheet-header-left`,{close:h})]),"header-right":(0,t.withCtx)(()=>[(0,t.renderSlot)(e.$slots,`sheet-header-right`,{close:h})]),default:(0,t.withCtx)(()=>[(0,t.renderSlot)(e.$slots,`content`,{resolvedPlacement:(0,t.unref)(M),isSheet:!0,close:h})]),_:3},8,[`open`,`title`,`dismiss-on-overlay-click`,`dismiss-on-escape`,`has-open-descendant`,`content-id`])):((0,t.openBlock)(),(0,t.createBlock)(t.Transition,{key:1,name:`s-ui-dropdown`,onAfterLeave:(0,t.unref)(p)},{default:(0,t.withCtx)(()=>[(0,t.unref)(d)?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,id:O.value,ref_key:`panelRef`,ref:S,class:(0,t.normalizeClass)([`s-ui-dropdown__panel`,{"s-ui-dropdown__panel--match-reference-width":n.matchReferenceWidth,"s-ui-dropdown__panel--ready":(0,t.unref)(V)}]),style:(0,t.normalizeStyle)((0,t.unref)(I)),role:`dialog`},[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`s-ui-dropdown__surface`,[n.surfaceClass,{"s-ui-dropdown__surface--fit-viewport":J.value,"s-ui-dropdown__surface--with-arrow":n.arrow}]]),style:(0,t.normalizeStyle)(Y.value),"data-placement":(0,t.unref)(R)},[n.arrow?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:(0,t.normalizeClass)([`s-ui-dropdown__arrow`,{"s-ui-dropdown__arrow--overflow":(0,t.unref)(B)}]),style:(0,t.normalizeStyle)((0,t.unref)(z)),"aria-hidden":`true`},[...r[0]||=[(0,t.createElementVNode)(`span`,{class:`s-ui-dropdown__arrow-shape`},null,-1)]],6)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,b,[(0,t.renderSlot)(e.$slots,`content`,{resolvedPlacement:(0,t.unref)(R),isSheet:!1,close:h})])],14,y)],14,v)):(0,t.createCommentVNode)(``,!0)]),_:3},8,[`onAfterLeave`]))],8,[`to`,`disabled`]))],64))}});Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}});
@@ -1,400 +0,0 @@
1
- import { n as e, o as t, r as n, s as r, t as i } from "./useFloatingOverlay-TxzVisMJ.js";
2
- import { Fragment as a, Teleport as o, Transition as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, defineComponent as p, inject as m, mergeModels as h, mergeProps as g, nextTick as _, normalizeClass as v, normalizeStyle as y, onBeforeUnmount as b, onScopeDispose as x, openBlock as S, provide as C, ref as w, renderSlot as T, shallowReactive as E, shallowRef as D, toDisplayString as O, toValue as k, unref as A, useId as j, useModel as M, useSlots as ee, useTemplateRef as N, watch as P, withCtx as F, withModifiers as I } from "vue";
3
- import { useUiKitI18n as L } from "@shtabapp/ui-kit-primitives";
4
- import { useElementHover as R, useEventListener as z, useMediaQuery as B, useScrollLock as V } from "@vueuse/core";
5
- //#region src/components/SDropdown/SDropdown.types.ts
6
- var H = 768, te = (e) => {
7
- let t = w(e.value), n = w(e.value);
8
- return P(e, (e) => {
9
- if (e) {
10
- t.value = !0, n.value = !0;
11
- return;
12
- }
13
- t.value = !1;
14
- }, { flush: "sync" }), {
15
- isPanelShown: t,
16
- isPanelActive: n,
17
- handlePanelAfterLeave: () => {
18
- e.value || (n.value = !1);
19
- }
20
- };
21
- }, ne = (e, t) => {
22
- let n = B(c(() => `(max-width: ${(k(t) || 768) - .02}px)`));
23
- return c(() => k(e) && n.value);
24
- }, U = Symbol("SDropdown"), re = (e) => {
25
- let t = m(U, null), n = E(/* @__PURE__ */ new Set()), r = c(() => [...n].filter((e) => e.isOpen())), i = c(() => r.value.length > 0), a = c(() => r.value.flatMap((e) => e.getElements())), o = {
26
- isOpen: () => k(e.open),
27
- getElements: () => {
28
- let t = k(e.element);
29
- return t ? [t, ...a.value] : a.value;
30
- }
31
- };
32
- return C(U, {
33
- registerChild: (e) => {
34
- n.add(e);
35
- },
36
- unregisterChild: (e) => {
37
- n.delete(e);
38
- }
39
- }), t && (t.registerChild(o), x(() => t.unregisterChild(o))), {
40
- hasOpenChild: i,
41
- descendantElements: a
42
- };
43
- }, ie = (e) => {
44
- if (!e) return null;
45
- let t = e.getBoundingClientRect();
46
- if (t.width > 0 || t.height > 0) return e;
47
- let n = e.firstElementChild;
48
- return n instanceof HTMLElement ? n : e;
49
- }, W = {
50
- OVERDRAG_LIMIT: 50,
51
- CLOSE_DISTANCE_RATIO: .3,
52
- CLOSE_DISTANCE_LIMIT: 140,
53
- CLOSE_VELOCITY: .5,
54
- SETTLE_TIMEOUT: 400,
55
- INTERACTIVE_SELECTOR: "button, a[href], input, select, textarea, [role=\"button\"], [contenteditable=\"true\"]"
56
- }, G = (e) => {
57
- let t = D(0), n = D(!1), r = D(!1), i = null, a = 0, o = 0, s = 0, l = 0, u = 0, d, f = c(() => n.value || r.value), p = () => {
58
- clearTimeout(d), d = void 0, r.value = !1;
59
- }, m = () => {
60
- r.value = !0, clearTimeout(d), d = setTimeout(p, W.SETTLE_TIMEOUT);
61
- }, h = () => {
62
- i = null, t.value = 0, n.value = !1, p();
63
- }, g = () => k(e.popup)?.offsetHeight ?? 0, _ = () => {
64
- let e = l - a;
65
- if (e <= 0) return !1;
66
- let t = u - s;
67
- return (t > 0 ? (l - o) / t : 0) >= W.CLOSE_VELOCITY ? !0 : e >= Math.min(g() * W.CLOSE_DISTANCE_RATIO, W.CLOSE_DISTANCE_LIMIT);
68
- }, v = (e) => {
69
- i === null && (e.pointerType === "mouse" && e.button !== 0 || e.target instanceof Element && e.target.closest(W.INTERACTIVE_SELECTOR) || (i = e.pointerId, a = e.clientY, l = e.clientY, o = e.clientY, u = e.timeStamp, s = e.timeStamp, p(), n.value = !0));
70
- }, y = (e) => {
71
- i === e.pointerId && (o = l, s = u, l = e.clientY, u = e.timeStamp, t.value = Math.max(e.clientY - a, -W.OVERDRAG_LIMIT));
72
- }, b = (a) => {
73
- if (i === a.pointerId) {
74
- if (i = null, n.value = !1, _()) {
75
- r.value = !0, t.value = g() + W.OVERDRAG_LIMIT, e.onClose();
76
- return;
77
- }
78
- if (t.value === 0) {
79
- p();
80
- return;
81
- }
82
- m(), t.value = 0;
83
- }
84
- };
85
- return z(() => k(e.handle), "pointerdown", v), z(window, "pointermove", y), z(window, "pointerup", b), z(window, "pointercancel", b), z(() => k(e.popup), "transitionend", (e) => {
86
- e.propertyName !== "transform" || n.value || t.value !== 0 || p();
87
- }), x(() => {
88
- clearTimeout(d);
89
- }), {
90
- isActive: f,
91
- popupStyles: c(() => {
92
- if (f.value) return {
93
- transform: `translate3d(0, ${t.value}px, 0)`,
94
- transition: r.value ? "transform var(--s-ui-transition-duration-slow) var(--s-ui-transition-easing-standard)" : "none"
95
- };
96
- }),
97
- reset: h
98
- };
99
- }, K = ["aria-label"], q = { class: "s-ui-dropdown-sheet__side" }, J = { class: "s-ui-dropdown-sheet__title" }, Y = { class: "s-ui-dropdown-sheet__side s-ui-dropdown-sheet__side--end" }, X = ["id"], ae = /* @__PURE__ */ p({
100
- __name: "SDropdownSheet",
101
- props: {
102
- open: { type: Boolean },
103
- title: { default: "" },
104
- dismissOnOverlayClick: {
105
- type: Boolean,
106
- default: !0
107
- },
108
- dismissOnEscape: {
109
- type: Boolean,
110
- default: !0
111
- },
112
- hasOpenDescendant: {
113
- type: Boolean,
114
- default: !1
115
- },
116
- contentId: {}
117
- },
118
- emits: ["close"],
119
- setup(t, { expose: n, emit: r }) {
120
- let i = r, { t: a } = L(), o = N("overlayRef"), c = N("popupRef"), p = N("headerRef"), m = () => i("close"), { isActive: h, popupStyles: g, reset: v } = G({
121
- handle: p,
122
- popup: c,
123
- onClose: m
124
- }), x = V(() => typeof document > "u" ? null : document.body), C = () => {
125
- t.dismissOnOverlayClick && m();
126
- }, w = (e) => {
127
- h.value && e.stopPropagation();
128
- }, E = () => v(), D = null, k = () => {
129
- let e = document.activeElement;
130
- D = e instanceof HTMLElement ? e : null;
131
- }, j = async () => {
132
- await _();
133
- let e = c.value;
134
- !e || e.contains(document.activeElement) || e.focus({ preventScroll: !0 });
135
- }, M = () => {
136
- let e = D, t = !!c.value?.contains(document.activeElement);
137
- D = null, !(!t || !e?.isConnected) && e.focus({ preventScroll: !0 });
138
- };
139
- return P(() => t.open, (e) => {
140
- if (x.value = e, e) {
141
- k(), j();
142
- return;
143
- }
144
- M();
145
- }, { immediate: !0 }), e({
146
- open: () => t.open,
147
- enabled: () => t.dismissOnEscape,
148
- hasOpenDescendant: () => t.hasOpenDescendant,
149
- onDismiss: m
150
- }), b(() => {
151
- x.value = !1;
152
- }), n({ overlayElement: o }), (e, n) => (S(), l(s, {
153
- name: "s-ui-dropdown-sheet",
154
- onAfterLeave: E
155
- }, {
156
- default: F(() => [t.open ? (S(), d("div", {
157
- key: 0,
158
- ref_key: "overlayRef",
159
- ref: o,
160
- class: "s-ui-dropdown-sheet",
161
- onClick: C
162
- }, [f("div", {
163
- ref_key: "popupRef",
164
- ref: c,
165
- class: "s-ui-dropdown-sheet__popup",
166
- style: y(A(g)),
167
- role: "dialog",
168
- "aria-modal": "true",
169
- "aria-label": t.title || A(a)("dropdown.sheet"),
170
- tabindex: "-1",
171
- onClickCapture: w,
172
- onClick: n[0] ||= I(() => {}, ["stop"])
173
- }, [f("header", {
174
- ref_key: "headerRef",
175
- ref: p,
176
- class: "s-ui-dropdown-sheet__header"
177
- }, [
178
- n[1] ||= f("span", {
179
- class: "s-ui-dropdown-sheet__handle",
180
- "aria-hidden": "true"
181
- }, null, -1),
182
- f("div", q, [T(e.$slots, "header-left")]),
183
- f("div", J, O(t.title), 1),
184
- f("div", Y, [T(e.$slots, "header-right")])
185
- ], 512), f("div", {
186
- id: t.contentId,
187
- class: "s-ui-dropdown-sheet__content"
188
- }, [T(e.$slots, "default")], 8, X)], 44, K)], 512)) : u("", !0)]),
189
- _: 3
190
- }));
191
- }
192
- }), oe = ["id"], se = ["data-placement"], ce = { class: "s-ui-dropdown__content" }, Z = /* @__PURE__ */ p({
193
- inheritAttrs: !1,
194
- __name: "SDropdown",
195
- props: /*@__PURE__*/ h({
196
- placement: { default: () => r.BOTTOM_START },
197
- offset: { default: 8 },
198
- flip: {
199
- type: Boolean,
200
- default: !0
201
- },
202
- shift: {
203
- type: Boolean,
204
- default: !0
205
- },
206
- matchReferenceWidth: {
207
- type: Boolean,
208
- default: !1
209
- },
210
- fitViewport: {
211
- type: Boolean,
212
- default: !1
213
- },
214
- surfaceClass: {},
215
- teleportTo: {
216
- type: [String, Boolean],
217
- default: "body"
218
- },
219
- dismissOnClickOutside: {
220
- type: Boolean,
221
- default: !0
222
- },
223
- dismissOnEscape: {
224
- type: Boolean,
225
- default: !0
226
- },
227
- disabled: {
228
- type: Boolean,
229
- default: !1
230
- },
231
- reference: { default: null },
232
- contentId: {},
233
- viewportPadding: { default: 8 },
234
- boundary: { default: () => t.CLIPPING_ANCESTORS },
235
- block: {
236
- type: Boolean,
237
- default: !1
238
- },
239
- arrow: {
240
- type: Boolean,
241
- default: !1
242
- },
243
- showOnHover: {
244
- type: Boolean,
245
- default: !1
246
- },
247
- hoverLeaveDelay: { default: 100 },
248
- sheet: {
249
- type: Boolean,
250
- default: !0
251
- },
252
- sheetBreakpoint: { default: () => 768 },
253
- sheetTitle: { default: "" }
254
- }, {
255
- modelValue: {
256
- type: Boolean,
257
- default: !1
258
- },
259
- modelModifiers: {}
260
- }),
261
- emits: ["update:modelValue"],
262
- setup(e, { expose: t }) {
263
- let p = M(e, "modelValue"), m = ne(() => e.sheet, () => e.sheetBreakpoint), { isPanelShown: h, isPanelActive: _, handlePanelAfterLeave: b } = te(p), x = (e) => {
264
- p.value = e;
265
- }, C = () => x(!1), w = ee(), E = N("triggerWrapperRef"), D = N("panelRef"), O = N("sheetRef"), { hasOpenChild: k, descendantElements: I } = re({
266
- open: p,
267
- element: c(() => m.value ? O.value?.overlayElement ?? null : D.value)
268
- }), L = j(), z = j(), B = c(() => e.contentId ?? L), V = c(() => w.trigger ? ie(E.value) : e.reference), H = c(() => e.teleportTo !== !1), U = c(() => e.teleportTo === !1 ? "body" : e.teleportTo), W = r.BOTTOM_START, G = () => {
269
- e.disabled || x(!0);
270
- }, K = () => {
271
- e.disabled || (p.value = !p.value);
272
- }, q = c(() => ({
273
- id: z,
274
- "aria-expanded": p.value,
275
- "aria-haspopup": "dialog",
276
- "aria-controls": B.value
277
- })), { panelStyles: J, panelMaxHeight: Y, resolvedPlacement: X, arrowStyles: Z, isArrowOverflow: le, isPositionReady: ue, updatePosition: de } = i({
278
- open: () => _.value && !m.value,
279
- onOpenChange: x,
280
- reference: () => V.value,
281
- panel: () => D.value,
282
- placement: () => e.placement,
283
- offset: () => e.offset,
284
- flip: () => e.flip,
285
- shift: () => e.shift,
286
- matchReferenceWidth: () => e.matchReferenceWidth,
287
- fitViewport: () => e.fitViewport,
288
- dismissOnClickOutside: () => e.dismissOnClickOutside,
289
- dismissOnEscape: () => e.dismissOnEscape,
290
- viewportPadding: () => e.viewportPadding,
291
- arrow: () => e.arrow,
292
- boundary: () => e.boundary,
293
- clickOutsideIgnore: I,
294
- hasOpenDescendant: k
295
- }), Q = c(() => e.showOnHover && !m.value), fe = c(() => Q.value ? n(V.value) : null), pe = c(() => Q.value ? D.value : null), $ = R(fe, { delayLeave: e.hoverLeaveDelay }), me = R(pe, { delayLeave: e.hoverLeaveDelay });
296
- P([
297
- $,
298
- me,
299
- k,
300
- Q,
301
- () => e.disabled
302
- ], () => {
303
- if (Q.value) {
304
- if (e.disabled) {
305
- x(!1);
306
- return;
307
- }
308
- x($.value || me.value || k.value);
309
- }
310
- });
311
- let he = c(() => !!Y.value), ge = c(() => {
312
- if (Y.value) return { maxHeight: `${Y.value}px` };
313
- });
314
- return P(() => e.disabled, (e) => {
315
- e && p.value && (p.value = !1);
316
- }), t({
317
- updatePosition: de,
318
- show: G,
319
- close: C,
320
- toggle: K
321
- }), (t, n) => (S(), d(a, null, [A(w).trigger ? (S(), d("span", g({
322
- key: 0,
323
- ref_key: "triggerWrapperRef",
324
- ref: E,
325
- class: ["s-ui-dropdown", { "s-ui-dropdown--block": e.block }]
326
- }, t.$attrs), [T(t.$slots, "trigger", {
327
- open: p.value,
328
- toggle: K,
329
- close: C,
330
- isSheet: A(m),
331
- triggerProps: q.value
332
- })], 16)) : u("", !0), (S(), l(o, {
333
- to: U.value,
334
- disabled: !H.value
335
- }, [A(m) ? (S(), l(ae, {
336
- key: 0,
337
- ref_key: "sheetRef",
338
- ref: O,
339
- open: p.value,
340
- title: e.sheetTitle,
341
- "dismiss-on-overlay-click": e.dismissOnClickOutside,
342
- "dismiss-on-escape": e.dismissOnEscape,
343
- "has-open-descendant": A(k),
344
- "content-id": B.value,
345
- onClose: C
346
- }, {
347
- "header-left": F(() => [T(t.$slots, "sheet-header-left", { close: C })]),
348
- "header-right": F(() => [T(t.$slots, "sheet-header-right", { close: C })]),
349
- default: F(() => [T(t.$slots, "content", {
350
- resolvedPlacement: A(W),
351
- isSheet: !0,
352
- close: C
353
- })]),
354
- _: 3
355
- }, 8, [
356
- "open",
357
- "title",
358
- "dismiss-on-overlay-click",
359
- "dismiss-on-escape",
360
- "has-open-descendant",
361
- "content-id"
362
- ])) : (S(), l(s, {
363
- key: 1,
364
- name: "s-ui-dropdown",
365
- onAfterLeave: A(b)
366
- }, {
367
- default: F(() => [A(h) ? (S(), d("div", {
368
- key: 0,
369
- id: B.value,
370
- ref_key: "panelRef",
371
- ref: D,
372
- class: v(["s-ui-dropdown__panel", {
373
- "s-ui-dropdown__panel--match-reference-width": e.matchReferenceWidth,
374
- "s-ui-dropdown__panel--ready": A(ue)
375
- }]),
376
- style: y(A(J)),
377
- role: "dialog"
378
- }, [f("div", {
379
- class: v(["s-ui-dropdown__surface", [e.surfaceClass, {
380
- "s-ui-dropdown__surface--fit-viewport": he.value,
381
- "s-ui-dropdown__surface--with-arrow": e.arrow
382
- }]]),
383
- style: y(ge.value),
384
- "data-placement": A(X)
385
- }, [e.arrow ? (S(), d("div", {
386
- key: 0,
387
- class: v(["s-ui-dropdown__arrow", { "s-ui-dropdown__arrow--overflow": A(le) }]),
388
- style: y(A(Z)),
389
- "aria-hidden": "true"
390
- }, [...n[0] ||= [f("span", { class: "s-ui-dropdown__arrow-shape" }, null, -1)]], 6)) : u("", !0), f("div", ce, [T(t.$slots, "content", {
391
- resolvedPlacement: A(X),
392
- isSheet: !1,
393
- close: C
394
- })])], 14, se)], 14, oe)) : u("", !0)]),
395
- _: 3
396
- }, 8, ["onAfterLeave"]))], 8, ["to", "disabled"]))], 64));
397
- }
398
- });
399
- //#endregion
400
- export { H as n, Z as t };