@talend/react-components
Version:
Set of react components.
132 lines (129 loc) • 4.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.decorateWithOverlay = decorateWithOverlay;
exports.default = PieChartButtonComponent;
exports.wrapMouseEvent = wrapMouseEvent;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Actions = require("../Actions");
var _OverlayTrigger = _interopRequireDefault(require("../OverlayTrigger"));
var _theme = require("../theme");
var _PieChartIcon = _interopRequireWildcard(require("./PieChartIcon.component"));
var _PieChartModule = _interopRequireDefault(require("./PieChart.module.scss"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const theme = (0, _theme.getTheme)(_PieChartModule.default);
/**
* This function add an OverlayTrigger wrapping the button if defined
* @param {Element} btn the current button
* @param {string} overlayPlacement the overlay placement
* @param {Element} overlayComponent the overlay component
* @param {string} overlayId the id to be set for the overlay
* @param {callback} overlayRef the callback to be set for the overlay to bind ref
*/
function decorateWithOverlay(btn, overlayPlacement, overlayComponent, overlayId, overlayRef) {
if (!overlayComponent) {
return btn;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_OverlayTrigger.default, {
trigger: "click",
rootClose: true,
placement: overlayPlacement,
overlay: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
id: overlayId,
children: overlayComponent
}),
ref: overlayRef,
children: btn
})
});
}
/**
* This function wrap the event when we don't have an overlay component
* @param {function} mouseEvent the event to wrap ( mouseClick )
* @param {Element} overlayComponent tell if there is an overlay component
* @param {string} label the label of the component
* @param {object} rest the rest of the props
* @param {object} model the model of the component
*/
function wrapMouseEvent(mouseEvent, overlayComponent, label, rest, model) {
if (overlayComponent || !mouseEvent) {
return null;
}
return event => mouseEvent(event, {
action: {
label,
...rest
},
model
});
}
function PieChartButtonComponent({
available,
buttonRef,
className,
display,
hideLabel,
label,
labelIndex,
loading,
minimumPercentage,
model,
onClick,
onMouseDown,
overlayComponent,
overlayId,
overlayPlacement,
overlayRef,
size,
...rest
}) {
if (!available) {
return null;
}
const rClick = wrapMouseEvent(onClick, overlayComponent, label, rest, model);
const rMouseDown = wrapMouseEvent(onMouseDown, overlayComponent, label, rest, model);
const btn = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Actions.Action, {
className: theme('tc-pie-chart-button', className),
onMouseDown: rMouseDown,
onClick: rClick,
buttonRef: buttonRef,
bsStyle: "link",
role: "button",
...rest,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PieChartIcon.default, {
display: display,
hideLabel: hideLabel,
labelIndex: labelIndex,
loading: loading,
minimumPercentage: minimumPercentage,
model: model,
size: size
})
});
return decorateWithOverlay(btn, overlayPlacement, overlayComponent, overlayId, overlayRef);
}
PieChartButtonComponent.propTypes = {
..._PieChartIcon.pieChartIconPropTypes,
available: _propTypes.default.bool,
buttonRef: _propTypes.default.func,
className: _propTypes.default.string,
getComponent: _propTypes.default.func,
label: _propTypes.default.string,
onClick: _propTypes.default.func,
onMouseDown: _propTypes.default.func,
overlayComponent: _propTypes.default.element,
overlayId: _propTypes.default.string,
overlayPlacement: _OverlayTrigger.default.propTypes.placement,
overlayRef: _propTypes.default.func
};
PieChartButtonComponent.defaultProps = {
available: true,
overlayId: 'pie-chart-popover',
overlayPlacement: 'bottom'
};
PieChartButtonComponent.displayName = 'PieChartButton';
//# sourceMappingURL=PieChartButton.component.js.map