You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 lines
5.0 KiB

Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{menus,globalEvents,GLOBAL_EVENT_KEYS}=_ui.VxeUI;var _default=exports.default={methods:{_closeMenu(){return Object.assign(this.ctxMenuStore,{visible:!1,selected:null,selectChild:null,showChild:!1}),this.$nextTick()},moveCtxMenu(e,t,l,i,n,o){let s;var r=_xeUtils.default.findIndexOf(o,e=>t[l]===e);if(i)n&&(0,_utils.hasChildrenList)(t.selected)?t.showChild=!0:(t.showChild=!1,t.selectChild=null);else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_UP)){for(let e=r-1;0<=e;e--)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[o.length-1]}else if(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ARROW_DOWN)){for(let e=r+1;e<o.length;e++)if(!1!==o[e].visible){s=o[e];break}t[l]=s||o[0]}else t[l]&&(globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ENTER)||globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.SPACEBAR))&&this.ctxMenuLinkEvent(e,t[l])},handleGlobalContextmenuEvent(t){var e=this,l=e.$xeGrid,i=e;let{$refs:n,tId:o,editStore:s,menuConfig:r,contextMenu:u,ctxMenuStore:d,ctxMenuOpts:h,mouseConfig:a,mouseOpts:c}=this;var v=s.selected,e=e.$refs.refTableFilter,f=["header","body","footer"];if((0,_utils.isEnableConf)(r)||u){if(d.visible&&n.refTableMenu&&(0,_dom.getEventTargetNode)(t,n.refTableMenu.$el).flag)return void t.preventDefault();if(i._keyCtx){var i="body",g={type:i,$grid:l,$table:this,keyboard:!0,columns:this.visibleColumn.slice(0),$event:t};if(a&&c.area){var m=this.getActiveCellArea();if(m&&m.row&&m.column)return g.row=m.row,g.column=m.column,void this.handleOpenMenuEvent(t,i,g)}else if(a&&c.selected&&v.row&&v.column)return g.row=v.row,g.column=v.column,void this.handleOpenMenuEvent(t,i,g)}for(let e=0;e<f.length;e++){var x=f[e],b=(0,_dom.getEventTargetNode)(t,this.$el,`vxe-${x}--column`,e=>e.parentNode.parentNode.parentNode.getAttribute("xid")===o),E={type:x,$grid:l,$table:this,columns:this.visibleColumn.slice(0),$event:t};if(b.flag){var b=b.targetElem,p=this.getColumnNode(b).item;let e=x+"-";return Object.assign(E,{column:p,columnIndex:this.getColumnIndex(p),cell:b}),"body"===x&&(p=this.getRowNode(b.parentNode).item,e="",E.row=p,E.rowIndex=this.getRowIndex(p)),this.handleOpenMenuEvent(t,x,E),void(this.$listeners[e+"cell-context-menu"]?((0,_log.warnLog)("vxe.error.delEvent",[e+"cell-context-menu",e+"cell-menu"]),this.emitEvent(e+"cell-context-menu",E,t)):this.emitEvent(e+"cell-menu",E,t))}if((0,_dom.getEventTargetNode)(t,this.$el,`vxe-table--${x}-wrapper`,e=>e.getAttribute("xid")===o).flag)return void("cell"===h.trigger?t.preventDefault():this.handleOpenMenuEvent(t,x,E))}}e&&!(0,_dom.getEventTargetNode)(t,e.$el).flag&&this.closeFilter(),this.closeMenu()},handleOpenMenuEvent(l,i,c){let{isCtxMenu:n,ctxMenuStore:v,ctxMenuOpts:e}=this;i=e[i];let o=e.visibleMethod;if(i){let{options:t,disabled:e}=i;e?l.preventDefault():n&&t&&t.length&&(c.options=t,this.preventEvent(l,"event.showMenu",c,()=>{if(!o||o(c)){l.preventDefault(),this.updateZindex();let{scrollTop:n,scrollLeft:o,visibleHeight:s,visibleWidth:r}=(0,_dom.getDomNode)(),u=l.clientY+n,d=l.clientX+o,i=()=>{Object.assign(v,{args:c,visible:!0,list:t,selected:null,selectChild:null,showChild:!1,style:{zIndex:this.tZindex,top:u+"px",left:d+"px"}}),this.$nextTick(()=>{var e=this.$refs.refTableMenu.$el,t=e.clientHeight,l=e.clientWidth,{boundingTop:e,boundingLeft:i}=(0,_dom.getAbsolutePos)(e),e=e+t-s,i=i+l-r;-10<e&&(v.style.top=Math.max(n+2,u-t-2)+"px"),-10<i&&(v.style.left=Math.max(o+2,d-l-2)+"px")})},{keyboard:e,row:h,column:a}=c;e&&h&&a?this.scrollToRow(h,a).then(()=>{var e=this.getCellElement(h,a),{boundingTop:t,boundingLeft:l}=(0,_dom.getAbsolutePos)(e);u=t+n+Math.floor(e.offsetHeight/2),d=l+o+Math.floor(e.offsetWidth/2),i()}):i()}else this.closeMenu()}))}this.closeFilter()},ctxMenuMouseoverEvent(e,t,l){let d=e.currentTarget;var i=this.ctxMenuStore;e.preventDefault(),e.stopPropagation(),i.selected=t,(i.selectChild=l)||(i.showChild=(0,_utils.hasChildrenList)(t),i.showChild&&this.$nextTick(()=>{var n=d.nextElementSibling;if(n){var{boundingTop:o,boundingLeft:s,visibleHeight:r,visibleWidth:u}=(0,_dom.getAbsolutePos)(d),o=o+d.offsetHeight;let e="",t="",l=(s+d.offsetWidth+n.offsetWidth>u-10&&(e="auto",t=d.offsetWidth+"px"),""),i="";o+n.offsetHeight>r-10&&(l="auto",i="0"),n.style.left=e,n.style.right=t,n.style.top=l,n.style.bottom=i}}))},ctxMenuMouseoutEvent(e,t){var l=this.ctxMenuStore;t.children||(l.selected=null),l.selectChild=null},ctxMenuLinkEvent(e,t){var l,i=this.$xeGrid;t.disabled||!t.code&&t.children&&t.children.length||(l=menus.get(t.code),t=Object.assign({menu:t,$grid:i,$table:this,$event:e},this.ctxMenuStore.args),l&&l.menuMethod&&l.menuMethod(t,e),this.$listeners["context-menu-click"]?((0,_log.warnLog)("vxe.error.delEvent",["context-menu-click","menu-click"]),this.emitEvent("context-menu-click",t,e)):this.emitEvent("menu-click",t,e),this.closeMenu())}}};