diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f78b94..3d0f76b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ Liste des évolutions de la librairie Malio layer UI * [#MUI-42] Button / ButtonIcon : l'anneau de focus passe du halo `ring-2 ring-m-primary/50` à l'anneau standard `.m-focus-ring` (outline plein, offset 2px), pour l'homogénéité avec les autres composants. ### Fixed +* Famille Date (CalendarField) : le **clic sur le picto calendrier** ouvre désormais le popover (le `` en overlay absolu interceptait le clic sans le traiter, et ne le laissait pas retomber sur l'input). Couvre Date, DateTime, DateRange, DateWeek. La croix d'effacement conserve son comportement (efface sans ouvrir). * Famille Date editable (MalioDate, MalioDateTime) : la saisie clavier est désormais **bornée par champ** sur le premier **et** le second chiffre (jour `01-31`, mois `01-12`, heure `00-23`, minute `00-59`) — une valeur hors plage (`99/99/9999`, un jour `33`, un mois `19`…) ne peut plus être tapée (auparavant saisissable puis rejetée a posteriori par la validation). Les impossibilités calendaires fines (`31/02`, 29/02 non bissextile, hors `min`/`max`) restent captées par la validation. Implémenté via `buildBoundedMask(template)` (CalendarField) : un `preProcess` maska valide chaque champ progressivement (un chiffre n'est accepté que s'il reste une complétion valide dans la plage) ; il distingue le mois des minutes (même lettre `M`) selon la présence d'heures dans le gabarit. * DataTable : pagination réalignée verticalement après l'introduction du `min-h-[1rem]` du Select — la barre pagination passe en `items-center`, et le MalioSelect du sélecteur de perPage est encapsulé dans un wrapper `h-12` qui borne sa taille flex à la hauteur du field (le slot vide déborde invisiblement en dessous). Span « Lignes : » et boutons Prev/Page/Next sont désormais centrés exactement sur le field (y=24) * Drawer : le slot `#footer` est désormais rendu hors de la zone scrollable (épinglé en bas, comme la modal) ; seul le body défile et la scrollbar ne s'étend plus derrière le footer diff --git a/app/components/malio/date/Date.test.ts b/app/components/malio/date/Date.test.ts index 0754fe4..cf9a2b0 100644 --- a/app/components/malio/date/Date.test.ts +++ b/app/components/malio/date/Date.test.ts @@ -73,6 +73,18 @@ describe('MalioDate', () => { expect(wrapper.find('[data-test="popover"]').exists()).toBe(true) }) + it('opens on calendar icon click', async () => { + const wrapper = mountDate() + await wrapper.get('[data-test="calendar-icon"]').trigger('click') + expect(wrapper.find('[data-test="popover"]').exists()).toBe(true) + }) + + it('opens on calendar icon click in editable mode', async () => { + const wrapper = mountDate({editable: true}) + await wrapper.get('[data-test="calendar-icon"]').trigger('click') + expect(wrapper.find('[data-test="popover"]').exists()).toBe(true) + }) + it('opens on the current month when there is no value', async () => { const wrapper = mountDate() await wrapper.get('[data-test="date-input"]').trigger('click') diff --git a/app/components/malio/date/internal/CalendarField.vue b/app/components/malio/date/internal/CalendarField.vue index 73cc8cc..4405384 100644 --- a/app/components/malio/date/internal/CalendarField.vue +++ b/app/components/malio/date/internal/CalendarField.vue @@ -70,7 +70,8 @@ icon="mdi:calendar-blank" :width="24" :height="24" - :class="iconStateClass" + :class="[iconStateClass, (disabled || readonly) ? 'cursor-not-allowed' : 'cursor-pointer']" + @click="onFieldClick" />