From 6d7fda1421ff82bc7f731b0bc40119da1b16702e Mon Sep 17 00:00:00 2001 From: Eleazar Resendez Date: Tue, 30 Jun 2026 10:58:06 -0600 Subject: [PATCH 1/2] FOUR-31727: Fix DevLink bundle listing and selector search --- .../admin/devlink/components/LocalBundles.vue | 40 +++++++++-- .../js/components/shared/AddToBundle.vue | 13 +++- .../js/components/shared/BackendSelect.vue | 56 ++++++++++++--- tests/Feature/Api/DevLinkTest.php | 72 +++++++++++++++++++ 4 files changed, 166 insertions(+), 15 deletions(-) diff --git a/resources/js/admin/devlink/components/LocalBundles.vue b/resources/js/admin/devlink/components/LocalBundles.vue index 6a57f68285..d97d748e4a 100644 --- a/resources/js/admin/devlink/components/LocalBundles.vue +++ b/resources/js/admin/devlink/components/LocalBundles.vue @@ -8,11 +8,15 @@ import BundleModal from './BundleModal.vue'; import DeleteModal from './DeleteModal.vue'; import { useRouter, useRoute } from 'vue-router/composables'; import UpdateBundle from './UpdateBundle.vue'; +import PaginationTable from '../../../components/shared/PaginationTable.vue'; const vue = getCurrentInstance().proxy; const router = useRouter(); const route = useRoute(); const bundles = ref([]); +const meta = ref({}); +const page = ref(1); +const perPage = ref(15); const editModal = ref(null); const confirmDeleteModal = ref(null); const confirmPublishNewVersion = ref(null); @@ -50,9 +54,18 @@ onMounted(() => { const load = () => { ProcessMaker.apiClient - .get(`/devlink/local-bundles?filter=${filter.value}`) + .get('/devlink/local-bundles', { + params: { + filter: filter.value, + page: page.value, + per_page: perPage.value, + order_by: 'created_at', + order_direction: 'desc', + } + }) .then((result) => { bundles.value = result.data.data; + meta.value = result.data.meta; refreshKey.value++; }); }; @@ -131,6 +144,7 @@ const create = () => { ProcessMaker.apiClient .post('/devlink/local-bundles', selected.value) .then((result) => { + page.value = 1; load(); }); }; @@ -197,9 +211,21 @@ const debouncedLoad = debounce(load, 300); // Function called on change const handleFilterChange = () => { + page.value = 1; debouncedLoad(); }; +const handlePageChange = (newPage) => { + page.value = newPage; + load(); +}; + +const handlePerPageChange = (newPerPage) => { + page.value = 1; + perPage.value = newPerPage; + load(); +}; + const canEdit = (bundle) => { return bundle.dev_link === null; } @@ -280,9 +306,9 @@ const handleInstallationComplete = () => { @@ -301,6 +327,12 @@ const handleInstallationComplete = () => {
{{ $t("Create a bundle to easily share assets and settings between ProcessMaker instances.") }}
+ diff --git a/resources/js/components/shared/AddToBundle.vue b/resources/js/components/shared/AddToBundle.vue index d3b47dc218..c909acddcb 100644 --- a/resources/js/components/shared/AddToBundle.vue +++ b/resources/js/components/shared/AddToBundle.vue @@ -102,8 +102,8 @@ const save = (event) => {