Skip to content

Commit ba553a1

Browse files
committed
refactoring(notification-dossiers): Improve display of the number of hidden items
1 parent ede4558 commit ba553a1

3 files changed

Lines changed: 39 additions & 34 deletions

File tree

app/assets/stylesheets/notifications.scss

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ span.notifications {
4545

4646
.notification-dossier:not(:last-child)::after {
4747
content: '';
48-
margin: 0 1rem;
48+
margin: 0.25rem 1rem 0;
4949
width: 1px;
5050
height: 0.875rem;
5151
background-color: var(--text-default-grey);
@@ -54,15 +54,20 @@ span.notifications {
5454
.notification-dossier-contenu {
5555
font-size: 0.875rem;
5656
line-height: 1.25rem;
57+
word-break: break-word;
58+
}
59+
60+
.notification-dossier-contenu.fr-link {
61+
word-break: keep-all;
5762
}
5863

5964
.notification-indicator {
60-
position: absolute;
61-
right: 0;
62-
top: 0;
63-
padding-left: 1rem;
6465
list-style: none;
65-
background-image: linear-gradient(to right,
66-
transparent 5%,
67-
var(--background-alt-grey) 60%);
66+
margin: 0.25rem 0 0;
67+
padding: 0;
68+
}
69+
70+
.notification-dossier:not(.hidden):has(+ .notification-indicator)::after,
71+
.notification-dossier:not(.hidden) + .notification-indicator {
72+
display: none;
6873
}

app/javascript/controllers/truncate_notifications_controller.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class TruncateNotificationsController extends ApplicationController {
2525
if (usedWidth < notificationContainerWidth) {
2626
visibleCount++;
2727
} else {
28-
const hiddenCount = notificationDossiers.length - visibleCount - 1;
28+
const hiddenCount = notificationDossiers.length - visibleCount;
2929
truncateContainer = this.truncateNotification(
3030
truncateContainer,
3131
hiddenCount,
@@ -38,13 +38,11 @@ export class TruncateNotificationsController extends ApplicationController {
3838
}
3939

4040
private calculateNotificationContainerWidth() {
41-
const container = document.querySelector<HTMLElement>(
42-
'.notification-container-type'
43-
);
4441
const notificationBadge = document.querySelector<HTMLElement>(
4542
'.notification-badge'
4643
);
47-
return container!.offsetWidth - notificationBadge!.offsetWidth;
44+
// 1168 : `.notification-container-type` width in desktop view
45+
return 1168 - notificationBadge!.offsetWidth;
4846
}
4947

5048
private truncateNotification(
@@ -53,13 +51,11 @@ export class TruncateNotificationsController extends ApplicationController {
5351
indicator: HTMLElement,
5452
notification: HTMLElement
5553
) {
54+
notification.classList.add('hidden');
5655
if (truncateContainer == false) {
5756
if (hiddenCount > 0) {
58-
indicator!.innerHTML = `<span aria-hidden="true">…</span> +${hiddenCount}`;
57+
indicator!.innerHTML = `<span class="notification-dossier-contenu fr-mr-1w" aria-hidden="true">…</span><span class="notification-dossier-contenu fr-text--bold">(+ ${hiddenCount})</span>`;
5958
}
60-
notification.style.overflow = 'hidden';
61-
} else {
62-
notification.classList.add('hidden');
6359
}
6460
return true;
6561
}

app/views/instructeurs/procedures/_notifications_list_body.html.erb

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,31 @@
1313

1414
<% dossiers_by_notification_type.each do |notification_type, dossiers| %>
1515
<div class="flex align-start fr-mt-1w notification-container-type">
16-
<div class="fr-col-3 fr-pr-1w notification-badge">
16+
<div class="fr-col-6 fr-col-sm-3 fr-pr-1w notification-badge">
1717
<%= tag_notification(notification_type, generic: true) %>
1818
</div>
1919

20-
<ul class="fr-col-9 flex wrap notification-dossiers">
21-
<% dossiers.each_with_index do |dossier, dossier_index| %>
22-
<li class="flex align-center notification-dossier">
23-
<% if statut != 'supprimes' %>
24-
<%= link_to dossier.id, instructeur_dossier_path(procedure_id, dossier.id), class: "notification-dossier-contenu fr-link" %>
25-
<% else %>
26-
<span class="notification-dossier-contenu">
27-
<%= dossier.id %>
20+
<div class="fr-col-6 fr-col-sm-9 flex">
21+
<ul class="flex wrap notification-dossiers">
22+
<% dossiers.each_with_index do |dossier, dossier_index| %>
23+
<li class="flex align-start notification-dossier">
24+
<% if statut != 'supprimes' %>
25+
<%= link_to dossier.id, instructeur_dossier_path(procedure_id, dossier.id), class: "notification-dossier-contenu fr-link" %>
26+
<% else %>
27+
<span class="notification-dossier-contenu">
28+
<%= dossier.id %>
29+
</span>
30+
<% end %>
31+
32+
<span class="notification-dossier-contenu fr-ml-1w">
33+
<%= dossier.owner_name %>
2834
</span>
29-
<% end %>
30-
<span class="notification-dossier-contenu fr-ml-1w">
31-
<%= dossier.owner_name %>
32-
</span>
33-
</li>
34-
<% end %>
35-
</ul>
36-
<span class="fr-text--sm fr-text--bold notification-indicator"></span>
35+
</li>
36+
<% end %>
37+
38+
<li class="fr-text--sm notification-indicator"></li>
39+
</ul>
40+
</div>
3741
</div>
3842
<% end %>
3943
<% end %>

0 commit comments

Comments
 (0)