UNPKG

@chief-editor/ui

Version:

UI Component for chief editor

1 lines 1.54 kB
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var o,r=1,s=arguments.length;r<s;r++)for(var t in o=arguments[r])Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t]);return e}).apply(this,arguments)};import{useElementSize}from"@rc-hooks/dom";import{useToggle,useUpdate}from"@rc-hooks/use";import{classnames}from"@co-hooks/util";import React,{useRef}from"react";import{usePrefixCls}from"../../hooks";import{Popover}from"../popover";export function useDropdown(e,o){var r=useToggle(!1),s=r[0],t=r[1],a=r[2],i=useRef(null),n=classnames(e.className,usePrefixCls("dropdown-trigger"),usePrefixCls("can-input-grouped")),l=e.trigger,p=void 0===l?"click":l,f=e.disabled,u=e.offset,d=void 0===u?{x:0,y:-25}:u,m=e.placement,c=void 0===m?"bottom-start":m,v=e.popoverStyle,w=void 0===v?{}:v,h=e.popoverClassName,g=e.showDelay,y=e.hideDelay,_=e.menu,P=e.arrow,x=e.arrowOffset,C=e.preventOverflow,O=void 0!==C&&C,k=e.overflowBoundaries,R=usePrefixCls("dropdown",{list:!0}),b=useUpdate(),D=useElementSize(i,(function(){return null==w.width}),b).width,E=classnames(usePrefixCls("dropdown",{popover:!0}),h),N=React.createElement("div",{className:R,onClick:a},_);return React.createElement(Popover,{className:n,show:s,preventOverflow:O,overflowBoundaries:k,placement:c,trigger:p,disabled:f,popoverClassName:E,getPopper:N,showDelay:g,hideDelay:y,onShow:t,onHide:a,offset:d,popoverStyle:__assign(__assign({},w),{width:null!=w.width?w.width:Math.max(100,D)}),arrow:P,arrowOffset:x},React.createElement("span",{ref:i},o))}