Feat/epinio 518 521 advanced configurations#561
Merged
Hannahbird merged 11 commits intofeat/EPINIO-523-524__services_catalogfrom Apr 14, 2026
Merged
Conversation
… support Adds state, mutations, getters, and actions to the epinio store to support optional server-side pagination — ready to wire up once the trailhand-table page-change event is available.
Update data structure in configurations.js
…1__advanced_configurations
Replace the configurations list's Rancher shell routing with a trailhand-table and a ConfigurationModal component supporting view, create, and edit modes. Edit is gated to configurations with type === 'custom'. Bind-to-application changes are captured before modal close to prevent cleared-ref race. Namespace filter now applied to both configurations and services tables via activeNamespaceCache.
Introduce ConfigurationDeleteModal that mirrors the services delete pattern. Lists bound applications with a caution warning, unbinds them all before deletion, and refreshes configurations and apps on success. Delete action in the action menu is gated to type === 'custom'.
…-518-521__advanced_configurations
….com:epinio/ui into feat/EPINIO-518-521__advanced_configurations
dcharles525
requested changes
Apr 13, 2026
Member
dcharles525
left a comment
There was a problem hiding this comment.
Only thing I found is when I upload a file, it adds x rows, below the initial empty row, it would be nice for the data to start in the empty row.
… the user uploads a file, the parsed rows now replace that empty row rather than being appended after it. If there are already real rows present, the uploaded rows still append as before.
johnlcos
requested changes
Apr 13, 2026
…title during create
2b211c1
into
feat/EPINIO-523-524__services_catalog
2 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Checklist
Summary
Fixes #518, #519, #520, #521
Migrates the Advanced Configurations list to
trailhand-tableand introduces aConfigurationModalcomponent that handles view, create, and edit flows in a single modal, following the same pattern established for services.Occurred changes and/or fixed issues
list/configurations.vue): replaced Rancher shell table and create-page routing withtrailhand-table+ConfigurationModal. Name column is now a clickable link that opens the view modal. Responsive column hiding at breakpoints. Action menu wired to modal edit flow.components/configuration/ConfigurationModal.vue): new component supportingview,edit, andcreatemodes.type === 'custom'configurations.closeModal()is called, preventing a cleared-ref race that silently dropped all binding changes.list/configurations.vue,list/services.vue): both tables now respect the active namespace filter viastore.state.activeNamespaceCache, consistent with the applications table.components/configuration/ConfigurationDeleteModal.vue): new modal triggered from the action menu Delete item (gated totype === 'custom'). Displays the configuration name and lists any bound applications with a caution warning. Unbinds all bound apps before calling remove, then force-refreshes configurations and apps on success.Technical notes summary
ConfigurationModalexposesopenCreate,openView, andopenEdit.openEditdelegates toopenViewthen overridesmodalModeto avoid duplicating hydration logic.Array<{ key, value }>internally and converted to/from the API'sRecord<string, string>viadetailsToRows/rowsToDetails.{ data: { ...this.data } }(PUT) as required byConfigurationReplaceRequest. The prior implementation was missing the outerdatawrapper which caused updates to silently wipe all config data.void store.state.activeNamespaceCacheKeyestablishes Vue reactivity on the cache key insidewatchEffectwithout introducing an unused variable.configuration.type === 'custom'(both action menu and modal footer button) to prevent editing service-owned configurations.Areas or cases that should be tested
KEY=VALUEfile and verify rows are parsed and appended correctly.type !== 'custom').Areas which could experience regressions
list/services.vue- verify service rows still display correctly, including state tags, action menu (edit/delete), and the delete modal flow.trailhand-tablecolumn formatter for Name replaces the previouslink:property - verify sorting on the Name column still works.bindConfigurations/unbindConfigurationcalls go through the app model - verify bound configs are reflected correctly on the application detail page.app.unbindConfiguration- verify the app's bound configuration list reflects the removal correctly.Screenshot/Video