carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 1.27 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../../__internal__/utils/helpers/events/events.js"),n=require("../useMenuKeyboardNavigation/useMenuKeyboardNavigation.js");exports.default=(u,l=1)=>{const[r,o]=e.useState(!1),[a,i]=e.useState(0),s=e.useRef(null),d=e.useRef(null),c=e.useCallback((()=>{o(!1)}),[]);function v(){o(!0),s.current&&i(l*s.current.getBoundingClientRect().width)}const f=e.useCallback((()=>{var e;return null===(e=d.current)||void 0===e?void 0:e.querySelectorAll('[data-component="button"]')}),[]),p={"data-element":"additional-buttons",role:"list",onKeyDown:n.default(u,f,c,r),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||c()},minWidth:a,ref:d},y={inSplitButton:!0,onChildButtonClick:e=>t=>{var n;null==e||e(t),c(),null===(n=u.current)||void 0===n||n.focus()}};return{showAdditionalButtons:r,showButtons:v,hideButtons:c,buttonNode:s,handleToggleButtonKeyDown:e=>{const n=t.default.isEnterKey(e)||t.default.isSpaceKey(e);var u,l;!n&&!t.default.isDownKey(e)||r||(e.preventDefault(),v()),t.default.isDownKey(e)&&r&&(e.preventDefault(),null===(l=f())||void 0===l||null===(u=l[0])||void 0===u||u.focus({preventScroll:!0})),n&&r&&(e.preventDefault(),c())},wrapperProps:p,contextValue:y}};