"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PackagePolicyActionsMenu = void 0;
var _react = _interopRequireWildcard(require("react"));
var _eui = require("@elastic/eui");
var _i18nReact = require("@kbn/i18n-react");
var _hooks = require("../hooks");
var _agent_enrollment_flyout = require("./agent_enrollment_flyout");
var _context_menu_actions = require("./context_menu_actions");
var _danger_eui_context_menu_item = require("./danger_eui_context_menu_item");
var _package_policy_delete_provider = require("./package_policy_delete_provider");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
const PackagePolicyActionsMenu = ({
agentPolicy,
packagePolicy,
showAddAgent,
upgradePackagePolicyHref,
defaultIsOpen = false
}) => {
var _packagePolicy$packag, _packagePolicy$packag2;
const [isEnrollmentFlyoutOpen, setIsEnrollmentFlyoutOpen] = (0, _react.useState)(false);
const {
getHref
} = (0, _hooks.useLink)();
const canWriteIntegrationPolicies = (0, _hooks.useAuthz)().integrations.writeIntegrationPolicies;
const refreshAgentPolicy = (0, _hooks.useAgentPolicyRefresh)();
const [isActionsMenuOpen, setIsActionsMenuOpen] = (0, _react.useState)(defaultIsOpen);
const isManaged = Boolean(packagePolicy.is_managed);
const agentPolicyIsManaged = Boolean(agentPolicy === null || agentPolicy === void 0 ? void 0 : agentPolicy.is_managed);
const isAddAgentVisible = showAddAgent && agentPolicy && !agentPolicyIsManaged;
const onEnrollmentFlyoutClose = (0, _react.useMemo)(() => {
return () => setIsEnrollmentFlyoutOpen(false);
}, []);
const menuItems = [
// FIXME: implement View package policy action
// {}}
// key="packagePolicyView"
// >
//
// ,
...(isAddAgentVisible ? [/*#__PURE__*/_react.default.createElement(_eui.EuiContextMenuItem, {
"data-test-subj": "PackagePolicyActionsAddAgentItem",
icon: "plusInCircle",
onClick: () => {
setIsActionsMenuOpen(false);
setIsEnrollmentFlyoutOpen(true);
},
key: "addAgent"
}, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, {
id: "xpack.fleet.epm.packageDetails.integrationList.addAgent",
defaultMessage: "Add agent"
}))] : []), /*#__PURE__*/_react.default.createElement(_eui.EuiContextMenuItem, {
"data-test-subj": "PackagePolicyActionsEditItem",
disabled: !canWriteIntegrationPolicies || !agentPolicy,
icon: "pencil",
href: getHref('integration_policy_edit', {
packagePolicyId: packagePolicy.id
}),
key: "packagePolicyEdit"
}, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, {
id: "xpack.fleet.policyDetails.packagePoliciesTable.editActionTitle",
defaultMessage: "Edit integration"
})), /*#__PURE__*/_react.default.createElement(_eui.EuiContextMenuItem, {
"data-test-subj": "PackagePolicyActionsUpgradeItem",
disabled: !packagePolicy.hasUpgrade || !canWriteIntegrationPolicies || !upgradePackagePolicyHref,
icon: "refresh",
href: upgradePackagePolicyHref,
key: "packagePolicyUpgrade"
}, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, {
id: "xpack.fleet.policyDetails.packagePoliciesTable.upgradeActionTitle",
defaultMessage: "Upgrade integration policy"
}))
// FIXME: implement Copy package policy action
// {}} key="packagePolicyCopy">
//
// ,
];
if (!agentPolicy || !agentPolicyIsManaged) {
menuItems.push( /*#__PURE__*/_react.default.createElement(_package_policy_delete_provider.PackagePolicyDeleteProvider, {
agentPolicy: agentPolicy,
key: "packagePolicyDelete"
}, deletePackagePoliciesPrompt => {
return /*#__PURE__*/_react.default.createElement(_danger_eui_context_menu_item.DangerEuiContextMenuItem, {
"data-test-subj": "PackagePolicyActionsDeleteItem",
disabled: !canWriteIntegrationPolicies,
icon: "trash",
onClick: () => {
deletePackagePoliciesPrompt([packagePolicy.id], () => {
setIsActionsMenuOpen(false);
refreshAgentPolicy();
});
}
}, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, {
id: "xpack.fleet.policyDetails.packagePoliciesTable.deleteActionTitle",
defaultMessage: "Delete integration"
}));
}));
}
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isEnrollmentFlyoutOpen && /*#__PURE__*/_react.default.createElement(_eui.EuiPortal, null, /*#__PURE__*/_react.default.createElement(_agent_enrollment_flyout.AgentEnrollmentFlyout, {
agentPolicy: agentPolicy,
onClose: onEnrollmentFlyoutClose,
isIntegrationFlow: true,
installedPackagePolicy: {
name: (packagePolicy === null || packagePolicy === void 0 ? void 0 : (_packagePolicy$packag = packagePolicy.package) === null || _packagePolicy$packag === void 0 ? void 0 : _packagePolicy$packag.name) || '',
version: (packagePolicy === null || packagePolicy === void 0 ? void 0 : (_packagePolicy$packag2 = packagePolicy.package) === null || _packagePolicy$packag2 === void 0 ? void 0 : _packagePolicy$packag2.version) || ''
}
})), /*#__PURE__*/_react.default.createElement(_context_menu_actions.ContextMenuActions, {
isManaged: isManaged,
isOpen: isActionsMenuOpen,
items: menuItems,
onChange: open => setIsActionsMenuOpen(open)
}));
};
exports.PackagePolicyActionsMenu = PackagePolicyActionsMenu;