diff --git a/resources/js/processes/designer/RecentAssetsList.vue b/resources/js/processes/designer/RecentAssetsList.vue index 62ffe90dd8..0799adfb36 100644 --- a/resources/js/processes/designer/RecentAssetsList.vue +++ b/resources/js/processes/designer/RecentAssetsList.vue @@ -91,6 +91,7 @@ :assetId="assetId" :assetName="assetName" /> + @@ -112,6 +113,7 @@ import AddToProjectModal from "../../components/shared/AddToProjectModal.vue"; import CreateTemplateModal from "../../components/templates/CreateTemplateModal.vue"; import CreatePmBlockModal from "../../components/pm-blocks/CreatePmBlockModal.vue"; import EllipsisMenu from "../../components/shared/EllipsisMenu.vue"; +import AddToBundle from "../../components/shared/AddToBundle.vue"; const uniqIdsMixin = createUniqIdsMixin(); @@ -121,6 +123,7 @@ export default { CreateTemplateModal, CreatePmBlockModal, EllipsisMenu, + AddToBundle, }, mixins: [ datatableMixin, @@ -170,6 +173,7 @@ export default { assetId: "", processTemplateName: "", pmBlockName: "", + bundleAssetType: "ProcessMaker\\Models\\Process", }; }, methods: { @@ -216,17 +220,20 @@ export default { getActions(data) { switch (data.asset_type) { case "Process": - return this.processActions; + return this.addBundleAction(this.processActions, 7); case "Screen": - return this.screenActions.filter((object) => object.value !== "duplicate-item"); + return this.addBundleAction( + this.screenActions.filter((object) => object.value !== "duplicate-item"), + 3, + ); case "Script": - return this.scriptActions; + return this.addBundleAction(this.scriptActions, 3); case "Data Source": - return this.dataSourceActions; + return this.addBundleAction(this.dataSourceActions, 2); case "Decision Table": - return this.decisionTableActions; + return this.addBundleAction(this.decisionTableActions, 2); case "Flow Genie": - return this.flowGenieActions; + return this.addBundleAction(this.flowGenieActions, 2); default: return []; // Handle unknown asset types as needed } @@ -266,6 +273,15 @@ export default { * go to navigate action */ onNavigate(action, data) { + if (action.value === "add-to-bundle") { + const assetType = this.getBundleAssetType(data.asset_type); + if (!assetType) { + return; + } + this.bundleAssetType = assetType; + this.$root.$emit("add-to-bundle", data); + return; + } switch (data.asset_type) { case "Process": this.assetType = "process"; @@ -320,6 +336,37 @@ export default { this.pmBlockName = name; this.$refs["create-pm-block-modal"].show(); }, + addBundleAction(actions, index) { + const addToBundleAction = { + value: "add-to-bundle", + content: "Add to Bundle", + icon: "fp-add-outlined", + permission: "admin", + }; + return actions.toSpliced(index, 0, addToBundleAction); + }, + getBundleAssetType(assetType) { + switch (assetType) { + case "Process": + return "ProcessMaker\\Models\\Process"; + case "Screen": + return "ProcessMaker\\Models\\Screen"; + case "Script": + return "ProcessMaker\\Models\\Script"; + case "Data Source": + return "ProcessMaker\\Packages\\Connectors\\DataSources\\Models\\DataSource"; + case "Decision Table": + return "ProcessMaker\\Package\\PackageDecisionEngine\\Models\\DecisionTable"; + case "Flow Genie": + return "ProcessMaker\\Package\\PackageAi\\Models\\FlowGenie"; + case "Collection": + return "ProcessMaker\\Plugins\\Collections\\Models\\Collection"; + case "PM Block": + return "ProcessMaker\\Package\\PackagePmBlocks\\Models\\PmBlock"; + default: + return null; + } + }, }, };