feat(front) : tags multiselect — couleur des sites + limite d'affichage
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 11s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 1m6s

- Sites : les tags du multiselect prennent la couleur de fond du site
  (champ color, groupe site:read) avec texte blanc, en saisie comme en
  consultation (clients, fournisseurs, prestataires, produits).
- Autres multiselects : 3 tags affichés au maximum (surplus condensé en « +N »).
- Bump @malio/layer-ui 1.7.15 → 1.7.17 (support color/textColor et maxTags
  sur les options).
This commit is contained in:
2026-06-28 14:15:50 +02:00
parent c9645caabd
commit 7cd0a90c8e
28 changed files with 130 additions and 47 deletions
@@ -168,9 +168,9 @@ describe('options construites depuis l\'embed (role-independantes)', () => {
])
})
it('siteOptionsOf expose value=IRI, label=nom', () => {
it('siteOptionsOf expose value=IRI, label=nom, color, textColor', () => {
expect(siteOptionsOf([{ '@id': '/api/sites/4', name: 'Chatellerault', color: '#000' }])).toEqual([
{ value: '/api/sites/4', label: 'Chatellerault' },
{ value: '/api/sites/4', label: 'Chatellerault', color: '#000', textColor: '#FFFFFF' },
])
})
@@ -201,7 +201,7 @@ describe('options construites depuis l\'embed (role-independantes)', () => {
categories: [{ '@id': '/api/categories/3', name: 'Secteur', code: 'SECTEUR' }],
})
expect(view.draft.id).toBe(18)
expect(view.siteOptions).toEqual([{ value: '/api/sites/4', label: 'Chatellerault' }])
expect(view.siteOptions).toEqual([{ value: '/api/sites/4', label: 'Chatellerault', textColor: '#FFFFFF' }])
expect(view.categoryOptions).toEqual([{ value: '/api/categories/3', label: 'Secteur', code: 'SECTEUR' }])
})
})
@@ -155,9 +155,9 @@ describe('options construites depuis l\'embed (role-independantes)', () => {
])
})
it('siteOptionsOf expose value=IRI, label=nom', () => {
it('siteOptionsOf expose value=IRI, label=nom, color, textColor', () => {
expect(siteOptionsOf([{ '@id': '/api/sites/87', name: 'Chatellerault', color: '#000' }])).toEqual([
{ value: '/api/sites/87', label: 'Chatellerault' },
{ value: '/api/sites/87', label: 'Chatellerault', color: '#000', textColor: '#FFFFFF' },
])
})
@@ -190,7 +190,7 @@ describe('options construites depuis l\'embed (role-independantes)', () => {
})
expect(view.draft.id).toBe(33)
expect(view.draft.addressType).toBe('RENDU')
expect(view.siteOptions).toEqual([{ value: '/api/sites/87', label: 'Chatellerault' }])
expect(view.siteOptions).toEqual([{ value: '/api/sites/87', label: 'Chatellerault', textColor: '#FFFFFF' }])
expect(view.categoryOptions).toEqual([{ value: '/api/categories/2279', label: 'Negociant', code: 'NEGOCIANT' }])
})
})