[feature] Unique parameters (#12388)

* Add uniqueness requirement for parameter values

* Add documentation

* Do not copy unique parameters

* Updated playwright tests

* Enhanced validation checks for uniqueness

* Update documentation

* Update CHANGELOG

* Bump API version
This commit is contained in:
Oliver
2026-07-14 14:34:17 +10:00
committed by GitHub
parent 183e6c37b1
commit 61dcc04205
14 changed files with 411 additions and 7 deletions
+2 -1
View File
@@ -111,7 +111,8 @@ export function useParameterTemplateFields(): ApiFormFieldSet {
active: true
}
},
enabled: {}
enabled: {},
unique: {}
};
}, []);
}
+37 -1
View File
@@ -70,7 +70,43 @@ test('Company - Parameters', async ({ browser }) => {
await page.getByRole('option', { name: 'NET-30' }).click();
await page.getByRole('cell', { name: 'Arrow Electronics' }).waitFor();
await page.getByRole('cell', { name: 'PCB assembly house' }).waitFor();
await page.getByRole('cell', { name: 'SUP-012' }).waitFor();
await page.getByRole('cell', { name: 'PCBA+' }).click();
await page.getByRole('link', { name: 'details-company-45' }).click();
// Let's duplicate this company
await openDetailAction(page, 'company', 'duplicate');
await page
.getByRole('textbox', { name: 'text-field-name' })
.fill(`PCBA Duplicate ${Math.floor(Math.random() * 1000)}`);
await page.getByRole('button', { name: 'Submit' }).click();
await page.waitForLoadState('networkidle');
await loadTab(page, 'Parameters');
// Only one parameter should be visible (unique parameters not copied)
await page.getByRole('cell', { name: 'NET-30' }).waitFor();
await page.getByText('1 - 1 / 1').waitFor();
// Try to create a duplicate parameter
await page
.getByRole('button', { name: 'action-menu-add-parameters' })
.click();
await page
.getByRole('menuitem', {
name: 'action-menu-add-parameters-create-parameter'
})
.click();
await page
.getByRole('combobox', { name: 'related-field-template' })
.fill('supplier');
await page.getByRole('option', { name: 'Supplier ID' }).click();
await page.getByRole('textbox', { name: 'text-field-data' }).fill('SUP-012');
await page.getByRole('button', { name: 'Submit' }).click();
await page.getByText('Parameter value must be unique').waitFor();
});
test('Company - Supplier Parts', async ({ browser }) => {