react-dyn-tabs
Version:
React dynamic tabs with full API
34 lines • 1.59 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import React, { useState, useCallback, useRef, useEffect } from 'react';
import PropTypes from 'prop-types';
export default function Button(getDeps, props) {
var _getDeps = getDeps(),
Popper = _getDeps.Popper,
Api = _getDeps.Api,
ctx = _getDeps.ctx,
components = _getDeps.components;
var _useState = useState(false),
open = _useState[0],
setOpen = _useState[1];
var btnRef = useRef();
var ref = useRef();
components.useForceUpdate();
ref.current = ref.current || Api.call(ctx, components, setOpen);
var onClick = useCallback(function (ev) {
ref.current.onButtonClick(ev, open);
}, [open]);
useEffect(function () {
ref.current.onMount();
return function () {
(ref == null ? void 0 : ref.current) && ref.current.onDestroy && ref.current.onDestroy();
};
}, []);
var IconComponent = ctx.getOption('moreButtonPlugin_iconComponent');
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", ref.current.btnPropsGenerator(onClick, btnRef, open), /*#__PURE__*/React.createElement(IconComponent, {
instance: props.instance
})), open ? /*#__PURE__*/React.createElement(Popper, _extends({}, props, {
instance: ctx,
TabsComponent: ref.current.TabsComponent,
btnRef: btnRef
})) : null);
}