@tourmalinecore/react-table-responsive
Version:
React Table Responsive
2 lines (1 loc) • 1.55 kB
JavaScript
import{slicedToArray as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as o,jsx as e}from"react/jsx-runtime";import{useRef as n,useState as r}from"react";import*as a from"react-dom";import{useOnClickOutside as c}from"../../features/hooks/useOnClickOutside.js";import{getRelativePosition as i}from"../../features/utils/getRelativePosition.js";import{getTableById as l}from"../../features/components/DesktopTable/helpers.js";function s(s){var d=s.tableId,p=s.actions,u=s.rowWithValues,m=n(null),f=n(null),b=r(!1),h=t(b,2),k=h[0],w=h[1];c({refs:[m,f],handler:function(){return w(!1)}});var _=p.filter((function(t){return t.show(u)}));return _.length>0?o("div",{ref:m,className:"tc-table-desktop-actions-dropdown",children:[e("button",{type:"button",className:"tc-table-desktop-actions-dropdown__button","data-cy":"table-dropdown-button",onClick:function(){return w(!k)},children:e("span",{})}),k&&a.createPortal(e("div",{ref:f,style:{top:i({tableId:d,targetElem:m}).top+m.current.offsetHeight/2},className:"tc-table-desktop-actions-dropdown__list","data-cy":"table-dropdown-list",children:_.map((function(t){return o("button",{type:"button",className:"tc-table-desktop-actions-dropdown__action","data-cy":"table-dropdown-action",onClick:function(o){w(!k),t.onClick&&t.onClick(o,u)},children:[t.renderIcon&&e("span",{className:"tc-table-desktop-actions-dropdown__action-icon","data-cy":"action-icon",children:t.renderIcon(u)}),t.renderText(u)]},"".concat(t.name,"-").concat(u.id))}))}),l({tableId:d}))]}):""}export{s as ActionsDropdown};