diff --git a/packages/front-core/src/modules/messages/components/MessageRecipientsSelect.tsx b/packages/front-core/src/modules/messages/components/MessageRecipientsSelect.tsx index ebe422c..c8c76d2 100644 --- a/packages/front-core/src/modules/messages/components/MessageRecipientsSelect.tsx +++ b/packages/front-core/src/modules/messages/components/MessageRecipientsSelect.tsx @@ -56,9 +56,10 @@ type DistributionWithCatalogName = { }; export enum RecipientOptionGroup { - DEFAULT = '1DefaultGroup', - CONTRACTS = '2ContractsGroup', - DISTRIBUTION = '3DistributionGroup', + TOP = '0TopGroup', + CONTRACTS = '1ContractsGroup', + DISTRIBUTION = '2DistributionGroup', + DEFAULT = '3DefaultGroup', } export interface RecipientOption { @@ -140,7 +141,7 @@ const RecipientGroup = ({ } }, [group, groupOpenByKey, groupKey, setGroupOpenByKey]); - const isDefault = group === RecipientOptionGroup.DEFAULT; + const isDefault = group === RecipientOptionGroup.DEFAULT || group === RecipientOptionGroup.TOP; const isContracts = group === RecipientOptionGroup.CONTRACTS; const toggleList = useCallback(() => { diff --git a/packages/front-core/src/modules/messages/components/MessagesForm.tsx b/packages/front-core/src/modules/messages/components/MessagesForm.tsx index c4f94f1..33c422e 100644 --- a/packages/front-core/src/modules/messages/components/MessagesForm.tsx +++ b/packages/front-core/src/modules/messages/components/MessagesForm.tsx @@ -53,6 +53,22 @@ const MessagesForm = ({ const { t } = useTranslation(['messages/default']); const { t: tLists } = useTranslation(['members/lists']); + const DEFAULT_ORDER: string[] = [ + 'withRunningContract', + 'withCommandInNextDistribution', + 'noCommandInNextDistribution', + 'admins', + 'catalogsContacts', + 'vendors', + 'membership', + 'noMembership', + 'hasOrders', + 'hasNoOrders', + 'waitingList', + 'test', + 'newUsers', + ]; + const defaultRecipientsOptions: RecipientOption[] = defaultUserLists // the 'vendor' type in userlists only lists user-vendors (vendors claimed by a user) // here we want to be able to reach all vendors, so we filter out this list and add it manually @@ -62,11 +78,19 @@ const MessagesForm = ({ value: ul.type, key: ul.type, label: formatUserList(ul, tLists), - group: RecipientOptionGroup.DEFAULT, + group: ul.type === 'all' ? RecipientOptionGroup.TOP : RecipientOptionGroup.DEFAULT, disabled: ul.count === 0, }), ); + const vendorsLists = UserLists.VENDORS; + defaultRecipientsOptions.push({ + key: vendorsLists.type, + value: vendorsLists.type, + label: tLists(vendorsLists.type), + group: RecipientOptionGroup.DEFAULT, + disabled: false, + }); const testLists = UserLists.TEST; defaultRecipientsOptions.push({ key: testLists.type, @@ -75,13 +99,12 @@ const MessagesForm = ({ group: RecipientOptionGroup.DEFAULT, disabled: false, }); - const vendorsLists = UserLists.VENDORS; - defaultRecipientsOptions.push({ - key: vendorsLists.type, - value: vendorsLists.type, - label: tLists(vendorsLists.type), - group: RecipientOptionGroup.DEFAULT, - disabled: false, + + defaultRecipientsOptions.sort((a, b) => { + if (a.group !== b.group) return a.group.localeCompare(b.group); + const aIdx = DEFAULT_ORDER.indexOf(a.value); + const bIdx = DEFAULT_ORDER.indexOf(b.value); + return (aIdx === -1 ? 999 : aIdx) - (bIdx === -1 ? 999 : bIdx); }); let senderEmail = ''; diff --git a/public/locales/fr/members/lists.json b/public/locales/fr/members/lists.json index cec0e53..fd8b627 100644 --- a/public/locales/fr/members/lists.json +++ b/public/locales/fr/members/lists.json @@ -1,19 +1,19 @@ { "all": "Tous les membres du groupe", "test": "TEST : moi + partenaire", - "admins": "Les administrateurs", + "admins": "Membres avec des droits admin", "hasNoOrders": "Membres sans commande", "hasOrders": "Membres avec commande", - "noMembership": "Adhésions à renouveler", - "membership": "Adhésions à jour", + "noMembership": "Membres avec adhésions à renouveler", + "membership": "Membres avec adhésions à jour", "contractSubscribers": "{{name}} du {{startDate}} au {{endDate}}", "newUsers": "Ne s'est jamais connecté", - "waitingList": "Liste d'attente", + "waitingList": "Membres en liste d'attente", "withProductToGetOnDistribution": "Distribution du {{date}} : {{catalogName}}", - "withCommandInNextDistribution": "Ayant déjà commandé pour la prochaine distribution", - "noCommandInNextDistribution": "N'ayant pas commandé pour la prochaine distribution", - "withRunningContract": "Avec un contrat AMAP en cours", + "withCommandInNextDistribution": "Membres avec commande pour la prochaine distribution", + "noCommandInNextDistribution": "Membres sans commande pour la prochaine distribution", + "withRunningContract": "Membres avec un contrat en cours", "catalogsContacts": "Contacts des catalogues", "empty": "Cette liste est vide", - "vendors": "Producteurs actifs" + "vendors": "Producteurs avec catalogues actifs" } diff --git a/public/locales/fr/messages/default.json b/public/locales/fr/messages/default.json index 055f87b..292758c 100644 --- a/public/locales/fr/messages/default.json +++ b/public/locales/fr/messages/default.json @@ -14,8 +14,8 @@ "noMessage": "Aucun message", "text": "Texte", "link": "Lien", - "2ContractsGroup": "Utilisateurs ayant déjà commandé dans un catalogue :", - "3DistributionGroup": "Utilisateurs ayant des produits à récupérer à une prochaine distribution :", + "1ContractsGroup": "Listes de diffusion par contrat :", + "2DistributionGroup": "Listes de diffusion par contrat et par date de distribution :", "latestSentMessage": "{{title}} - envoyé {{date}} dans {{group}}", "noMessageWithSlateContent": "Pas de message enregistré. Envoyez un message pour le retrouver ici.", "errorReusingMessage": "Erreur de chargement du message : {{error}}", @@ -38,4 +38,4 @@ "emailError": "Cette adresse email n'est pas correcte", "latestMessages": "Réutiliser un message déjà envoyé" } -} \ No newline at end of file +}