- {{t "pages.profiles-individual-results.table.title"}}
-
-
-
-
+
+
+ <:columns as |competence context|>
+
+ <:header>
{{t "pages.profiles-individual-results.table.column.skill"}}
-
- {{t
- "pages.profiles-individual-results.table.column.level"
- }}
- {{t
- "pages.profiles-individual-results.table.column.pix-score"
- }}
-
-
-
- {{#each @competences as |competence|}}
-
-
-
-
- {{competence.name}}
-
- |
-
- {{competence.estimatedLevel}}
- |
-
- {{competence.pixScore}}
- |
-
- {{/each}}
-
-
+
+ <:cell>
+
+ {{competence.name}}
+
+
+
+
+
+ <:header>
+ {{t "pages.profiles-individual-results.table.column.level"}}
+
+ <:cell>
+ {{competence.estimatedLevel}}
+
+
+
+
+ <:header>
+ {{t "pages.profiles-individual-results.table.column.pix-score"}}
+
+ <:cell>
+ {{competence.pixScore}}
+
+
+
+
{{#unless @isShared}}
diff --git a/orga/app/components/places/places-lot-table.gjs b/orga/app/components/places/places-lot-table.gjs
index 686c09e09a5..1a273456557 100644
--- a/orga/app/components/places/places-lot-table.gjs
+++ b/orga/app/components/places/places-lot-table.gjs
@@ -1,10 +1,11 @@
+import PixTable from '@1024pix/pix-ui/components/pix-table';
+import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
import PixTag from '@1024pix/pix-ui/components/pix-tag';
import dayjs from 'dayjs';
import { t } from 'ember-intl';
import { eq, gt } from 'ember-truth-helpers';
import { STATUSES } from '../../models/organization-places-lot';
-import Header from '../table/header';
import EmptyState from '../ui/empty-state.js';
function displayDate(date) {
@@ -18,37 +19,67 @@ function emptyCell(value) {
{{#if (gt @placesLots.length 0)}}
{{t "pages.places.places-lots.table.title"}}
-
-
- {{t "pages.places.places-lots.table.caption"}}
-
-
- {{t "pages.places.places-lots.table.headers.count"}}
- {{t "pages.places.places-lots.table.headers.activation-date"}}
- {{t "pages.places.places-lots.table.headers.expiration-date"}}
- {{t "pages.places.places-lots.table.headers.status"}}
-
-
-
- {{#each @placesLots as |placesLot|}}
-
- {{emptyCell placesLot.count}} |
- {{displayDate placesLot.activationDate}} |
- {{emptyCell (displayDate placesLot.expirationDate)}} |
-
- {{#if (eq placesLot.status STATUSES.PENDING)}}
- {{t "pages.places.places-lots.statuses.pending"}}
- {{else if (eq placesLot.status STATUSES.ACTIVE)}}
- {{t "pages.places.places-lots.statuses.active"}}
- {{else}}
- {{t "pages.places.places-lots.statuses.expired"}}
- {{/if}}
- |
-
- {{/each}}
-
-
-
+
+
+ <:columns as |placesLot context|>
+
+ <:header>
+ {{t "pages.places.places-lots.table.headers.count"}}
+
+ <:cell>
+ {{emptyCell placesLot.count}}
+
+
+
+
+ <:header>
+ {{t "pages.places.places-lots.table.headers.count"}}
+
+ <:cell>
+ {{displayDate placesLot.activationDate}}
+
+
+
+
+ <:header>
+ {{t "pages.places.places-lots.table.headers.activation-date"}}
+
+ <:cell>
+ {{emptyCell (displayDate placesLot.expirationDate)}}
+
+
+
+
+ <:header>
+ {{t "pages.places.places-lots.table.headers.expiration-date"}}
+
+ <:cell>
+
+
+
+
+ <:header>
+ {{t "pages.places.places-lots.table.headers.status"}}
+
+ <:cell>
+ {{#if (eq placesLot.status STATUSES.PENDING)}}
+ {{t "pages.places.places-lots.statuses.pending"}}
+ {{else if (eq placesLot.status STATUSES.ACTIVE)}}
+ {{t "pages.places.places-lots.statuses.active"}}
+ {{else}}
+ {{t "pages.places.places-lots.statuses.expired"}}
+ {{/if}}
+
+
+
+
+
{{else}}
diff --git a/orga/app/components/selectable-list.gjs b/orga/app/components/selectable-list.gjs
index 17315e29516..f0f9375ab67 100644
--- a/orga/app/components/selectable-list.gjs
+++ b/orga/app/components/selectable-list.gjs
@@ -49,5 +49,15 @@ export default class SelectableList extends Component {
{{yield item (fn this.toggle item) (this.isSelected item) index to="item"}}
{{/each}}
{{yield this.allSelected this.someSelected this.toggleAll this.selectedItems this.reset to="manager"}}
+
+ {{yield
+ this.toggle
+ this.isSelected
+ this.allSelected
+ this.someSelected
+ this.toggleAll
+ this.selectedItems
+ this.reset
+ }}
}
diff --git a/orga/app/components/statistics/index.gjs b/orga/app/components/statistics/index.gjs
index 9e8553dbbbe..112d2978db9 100644
--- a/orga/app/components/statistics/index.gjs
+++ b/orga/app/components/statistics/index.gjs
@@ -1,13 +1,14 @@
import PixButton from '@1024pix/pix-ui/components/pix-button';
import PixPagination from '@1024pix/pix-ui/components/pix-pagination';
import PixSelect from '@1024pix/pix-ui/components/pix-select';
+import PixTable from '@1024pix/pix-ui/components/pix-table';
+import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
import { service } from '@ember/service';
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import dayjs from 'dayjs';
import { t } from 'ember-intl';
-import Header from '../table/header';
import PageTitle from '../ui/page-title';
import CoverRateGauge from './cover-rate-gauge';
import TagLevel from './tag-level';
@@ -134,37 +135,38 @@ export default class Statistics extends Component {
}}
-
-
- {{t "pages.statistics.table.caption"}}
-
-
- {{t "pages.statistics.table.headers.competences"}}
- {{t "pages.statistics.table.headers.topics"}}
- {{t
- "pages.statistics.table.headers.positioning"
- }}
- {{t
- "pages.statistics.table.headers.reached-level"
- }}
-
-
-
- {{#each this.currentVisibleAnalysis as |line|}}
-
- {{line.competence_code}} {{line.competence}} |
- {{line.sujet}} |
-
-
- |
-
-
- |
-
- {{/each}}
-
-
-
+
+ <:columns as |analysis context|>
+
+ <:header>{{t "pages.statistics.table.headers.competences"}}
+ <:cell>{{analysis.competence_code}} {{analysis.competence}}
+
+
+
+ <:header>{{t "pages.statistics.table.headers.topics"}}
+ <:cell>{{analysis.sujet}}
+
+
+
+ <:header>{{t "pages.statistics.table.headers.positioning"}}
+ <:cell>
+
+
+
+
+
+ <:header>{{t "pages.statistics.table.headers.reached-level"}}
+ <:cell>
+
+
+
+
+
{{else}}
diff --git a/orga/app/components/team/invitations-list-item.gjs b/orga/app/components/team/invitations-list-item.gjs
index 422e201cea6..e45c9fab228 100644
--- a/orga/app/components/team/invitations-list-item.gjs
+++ b/orga/app/components/team/invitations-list-item.gjs
@@ -1,4 +1,5 @@
import PixIconButton from '@1024pix/pix-ui/components/pix-icon-button';
+import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
import PixTooltip from '@1024pix/pix-ui/components/pix-tooltip';
import { fn } from '@ember/helper';
import { action } from '@ember/object';
@@ -43,13 +44,30 @@ export default class InvitationsListItem extends Component {
}
-
- {{@invitation.email}} |
-
+
+ <:header>
+ {{t "pages.team-invitations.table.column.email-address"}}
+
+ <:cell>
+ {{@invitation.email}}
+
+
+
+
+ <:header>
+ {{t "pages.team-invitations.table.column.pending-invitation"}}
+
+ <:cell>
{{dayjsFormat @invitation.updatedAt "DD/MM/YYYY [-] HH:mm"}}
- |
-
-
+
+
+
+
+ <:header>
+ {{t "common.actions.global"}}
+
+ <:cell>
+
- |
-
+
+
}
diff --git a/orga/app/components/team/invitations-list.gjs b/orga/app/components/team/invitations-list.gjs
index 02a22eefc2e..76e06cef7a9 100644
--- a/orga/app/components/team/invitations-list.gjs
+++ b/orga/app/components/team/invitations-list.gjs
@@ -1,9 +1,8 @@
+import PixTable from '@1024pix/pix-ui/components/pix-table';
import { action } from '@ember/object';
import { service } from '@ember/service';
import Component from '@glimmer/component';
-import { t } from 'ember-intl';
-import TableHeader from '../table/header';
import InvitationsListItem from './invitations-list-item';
export default class TeamInvitationsListComponent extends Component {
@@ -28,25 +27,14 @@ export default class TeamInvitationsListComponent extends Component {
}
}
-
-
-
-
- {{t "pages.team-invitations.table.column.email-address"}}
- {{t
- "pages.team-invitations.table.column.pending-invitation"
- }}
-
- {{t "common.actions.global"}}
-
-
-
-
- {{#each @invitations as |invitation|}}
-
- {{/each}}
-
-
-
+
+ <:columns as |invitation context|>
+
+
+
}
diff --git a/orga/app/components/team/members-list-item.gjs b/orga/app/components/team/members-list-item.gjs
index d4403926a25..fe8e0854141 100644
--- a/orga/app/components/team/members-list-item.gjs
+++ b/orga/app/components/team/members-list-item.gjs
@@ -1,6 +1,7 @@
import PixButton from '@1024pix/pix-ui/components/pix-button';
import PixIconButton from '@1024pix/pix-ui/components/pix-icon-button';
import PixSelect from '@1024pix/pix-ui/components/pix-select';
+import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
import { fn } from '@ember/helper';
import { action } from '@ember/object';
import { service } from '@ember/service';
@@ -47,8 +48,9 @@ export default class MembersListItem extends Component {
constructor() {
super(...arguments);
+
this.organizationRoles = [this.adminOption, this.memberOption];
- this.roleSelection = this.args.membership.organizationRole;
+ this.roleSelection = this.args.membership?.organizationRole;
}
get displayRole() {
@@ -152,84 +154,111 @@ export default class MembersListItem extends Component {
}
-
- {{@membership.user.lastName}} |
- {{@membership.user.firstName}} |
-
- {{#unless this.isEditionMode}}
- {{this.displayRole}} |
- {{#if this.currentUser.isAdminInOrganization}}
-
- {{#if this.isNotCurrentUserMembership}}
-
-
- {{t "pages.team-members.actions.edit-organization-membership-role"}}
-
-
- {{t "pages.team-members.actions.remove-membership"}}
-
-
- {{else}}
- {{#if @isMultipleAdminsAvailable}}
+
+ <:header>
+ {{t "pages.team-members.table.column.last-name"}}
+
+ <:cell>
+ {{@membership.user.lastName}}
+
+
+
+
+ <:header>
+ {{t "pages.team-members.table.column.first-name"}}
+
+ <:cell>
+ {{@membership.user.firstName}}
+
+
+
+
+ <:header>
+ {{t "pages.team-members.table.column.organization-membership-role"}}
+
+ <:cell>
+ {{#unless this.isEditionMode}}
+ {{this.displayRole}}
+ {{/unless}}
+
+ {{#if this.isEditionMode}}
+
+ <:label>{{t "pages.team-members.actions.select-role.label"}}
+
+ {{/if}}
+
+
+
+ {{#if @displaManagingColumn}}
+
+ <:header>
+ {{t "common.actions.global"}}
+
+ <:cell>
+ {{#unless this.isEditionMode}}
+ {{#if this.currentUser.isAdminInOrganization}}
+ {{#if this.isNotCurrentUserMembership}}
-
- {{t "pages.team-members.actions.leave-organization"}}
+
+ {{t "pages.team-members.actions.edit-organization-membership-role"}}
+
+
+ {{t "pages.team-members.actions.remove-membership"}}
+ {{else}}
+ {{#if @isMultipleAdminsAvailable}}
+
+
+ {{t "pages.team-members.actions.leave-organization"}}
+
+
+ {{/if}}
{{/if}}
{{/if}}
- |
- {{/if}}
- {{/unless}}
-
- {{#if this.isEditionMode}}
-
-
-
- <:label>{{t "pages.team-members.actions.select-role.label"}}
-
-
- |
-
-
-
- {{t "pages.team-members.actions.save"}}
-
-
-
- |
- {{/if}}
-
+ {{/unless}}
+
+ {{#if this.isEditionMode}}
+
+
+ {{t "pages.team-members.actions.save"}}
+
+
+
+ {{/if}}
+
+
+ {{/if}}
{
+ this.members = members;
+ });
+ }
get currentLocale() {
return this.intl.primaryLocale;
@@ -23,42 +33,22 @@ export default class MembersList extends Component {
}
-
-
-
-
-
- {{t "pages.team-members.table.column.last-name"}}
- {{t "pages.team-members.table.column.first-name"}}
- {{t
- "pages.team-members.table.column.organization-membership-role"
- }}
- {{#if this.displayManagingColumn}}
-
- {{t "common.actions.global"}}
-
- {{/if}}
-
-
- {{#if @members}}
-
- {{#each @members as |membership|}}
-
- {{/each}}
-
- {{/if}}
-
-
- {{#unless @members}}
-
{{t "pages.team-members.table.empty"}}
- {{/unless}}
-
-
+
+ <:columns as |membership context|>
+
+
+
+
+ {{#unless @members}}
+ {{t "pages.team-members.table.empty"}}
+ {{/unless}}
{{#if @members}}
diff --git a/orga/app/components/ui/is-certifiable.gjs b/orga/app/components/ui/is-certifiable.gjs
index 11cf7d6cb88..3052b2f730e 100644
--- a/orga/app/components/ui/is-certifiable.gjs
+++ b/orga/app/components/ui/is-certifiable.gjs
@@ -10,7 +10,7 @@ import { eq } from 'ember-truth-helpers';
{{t "pages.sco-organization-participants.table.column.is-certifiable.eligible"}}
{{else}}
-
+
{{t "pages.sco-organization-participants.table.column.is-certifiable.non-eligible"}}
{{/if}}
diff --git a/orga/app/controllers/authenticated/campaigns/campaign/activity.js b/orga/app/controllers/authenticated/campaigns/campaign/activity.js
index b8cffc9ed1e..fa385ae9d4c 100644
--- a/orga/app/controllers/authenticated/campaigns/campaign/activity.js
+++ b/orga/app/controllers/authenticated/campaigns/campaign/activity.js
@@ -23,12 +23,12 @@ export default class ActivityController extends Controller {
}
@action
- goToParticipantPage(campaignId, participationId) {
- if (this.model.campaign.isTypeAssessment) {
- this.router.transitionTo('authenticated.campaigns.participant-assessment', campaignId, participationId);
- } else {
- this.router.transitionTo('authenticated.campaigns.participant-profile', campaignId, participationId);
- }
+ goToParticipantPage(participant) {
+ const route = this.model.campaign.isTypeAssessment
+ ? 'authenticated.campaigns.participant-assessment'
+ : 'authenticated.campaigns.participant-profile';
+
+ this.router.transitionTo(route, this.model.campaign.id, participant.lastCampaignParticipationId);
}
@action
diff --git a/orga/app/controllers/authenticated/campaigns/campaign/assessment-results.js b/orga/app/controllers/authenticated/campaigns/campaign/assessment-results.js
index bd7398faba1..6b02938b796 100644
--- a/orga/app/controllers/authenticated/campaigns/campaign/assessment-results.js
+++ b/orga/app/controllers/authenticated/campaigns/campaign/assessment-results.js
@@ -21,10 +21,8 @@ export default class AssessmentResultsController extends Controller {
}
@action
- goToAssessmentPage(campaignId, participantId, event) {
- event.stopPropagation();
- event.preventDefault();
- this.router.transitionTo('authenticated.campaigns.participant-assessment', campaignId, participantId);
+ goToAssessmentPage(campaignId, participant) {
+ this.router.transitionTo('authenticated.campaigns.participant-assessment', campaignId, participant.id);
}
@action
diff --git a/orga/app/controllers/authenticated/campaigns/campaign/profile-results.js b/orga/app/controllers/authenticated/campaigns/campaign/profile-results.js
index ddd2ea4cf60..96d64ea9aed 100644
--- a/orga/app/controllers/authenticated/campaigns/campaign/profile-results.js
+++ b/orga/app/controllers/authenticated/campaigns/campaign/profile-results.js
@@ -12,10 +12,8 @@ export default class ProfilesController extends Controller {
@tracked certificability = null;
@action
- goToProfilePage(campaignId, campaignParticipationId, event) {
- event.stopPropagation();
- event.preventDefault();
- this.router.transitionTo('authenticated.campaigns.participant-profile', campaignId, campaignParticipationId);
+ goToProfilePage(campaignId, participation) {
+ this.router.transitionTo('authenticated.campaigns.participant-profile', campaignId, participation.id);
}
@action
diff --git a/orga/app/controllers/authenticated/campaigns/list/all-campaigns.js b/orga/app/controllers/authenticated/campaigns/list/all-campaigns.js
index e5fae36f8c1..3ee1ffde61b 100644
--- a/orga/app/controllers/authenticated/campaigns/list/all-campaigns.js
+++ b/orga/app/controllers/authenticated/campaigns/list/all-campaigns.js
@@ -28,9 +28,8 @@ export default class AuthenticatedCampaignsListAllCampaignsController extends Co
}
@action
- goToCampaignPage(campaignId, event) {
- event.preventDefault();
- this.router.transitionTo('authenticated.campaigns.campaign', campaignId);
+ goToCampaignPage(campaign) {
+ this.router.transitionTo('authenticated.campaigns.campaign', campaign.id);
}
@action
diff --git a/orga/app/controllers/authenticated/campaigns/list/my-campaigns.js b/orga/app/controllers/authenticated/campaigns/list/my-campaigns.js
index 0329e3c8b52..23a04e2ac1a 100644
--- a/orga/app/controllers/authenticated/campaigns/list/my-campaigns.js
+++ b/orga/app/controllers/authenticated/campaigns/list/my-campaigns.js
@@ -26,9 +26,8 @@ export default class AuthenticatedCampaignsListMyCampaignsController extends Con
}
@action
- goToCampaignPage(campaignId, event) {
- event.preventDefault();
- this.router.transitionTo('authenticated.campaigns.campaign', campaignId);
+ goToCampaignPage(campaign) {
+ this.router.transitionTo('authenticated.campaigns.campaign', campaign.id);
}
@action
diff --git a/orga/app/controllers/authenticated/missions/list.js b/orga/app/controllers/authenticated/missions/list.js
index cc9d0766af4..4ac32727d4b 100644
--- a/orga/app/controllers/authenticated/missions/list.js
+++ b/orga/app/controllers/authenticated/missions/list.js
@@ -8,8 +8,8 @@ export default class MissionList extends Controller {
@service currentDomain;
@action
- goToMissionDetails(id) {
- this.router.transitionTo('authenticated.missions.mission', id);
+ goToMissionDetails(mission) {
+ this.router.transitionTo('authenticated.missions.mission', mission.id);
}
get schoolCode() {
diff --git a/orga/app/controllers/authenticated/organization-participants/list.js b/orga/app/controllers/authenticated/organization-participants/list.js
index 87f7be19ee9..1ae444e6adc 100644
--- a/orga/app/controllers/authenticated/organization-participants/list.js
+++ b/orga/app/controllers/authenticated/organization-participants/list.js
@@ -47,24 +47,30 @@ export default class ListController extends Controller {
}
@action
- sortByParticipationCount(value) {
- this.participationCountOrder = value || null;
+ sortByParticipationCount() {
+ if (!this.participationCountOrder) this.participationCountOrder = 'asc';
+ else this.participationCountOrder = this.participationCountOrder === 'asc' ? 'desc' : 'asc';
+
this.pageNumber = null;
this.latestParticipationOrder = null;
this.lastnameSort = null;
}
@action
- sortByLatestParticipation(value) {
- this.latestParticipationOrder = value || null;
+ sortByLatestParticipation() {
+ if (!this.latestParticipationOrder) this.latestParticipationOrder = 'asc';
+ else this.latestParticipationOrder = this.latestParticipationOrder === 'asc' ? 'desc' : 'asc';
+
this.pageNumber = null;
this.participationCountOrder = null;
this.lastnameSort = null;
}
@action
- sortByLastname(value) {
- this.lastnameSort = value || null;
+ sortByLastname() {
+ if (!this.lastnameSort) this.lastnameSort = 'asc';
+ else this.lastnameSort = this.lastnameSort === 'asc' ? 'desc' : 'asc';
+
this.pageNumber = null;
this.participationCountOrder = null;
this.latestParticipationOrder = null;
@@ -79,10 +85,9 @@ export default class ListController extends Controller {
}
@action
- goToLearnerPage(learnerId, event) {
+ goToLearnerPage(learner) {
if (this.hasOrganizationParticipantPage) {
- event.preventDefault();
- this.router.transitionTo('authenticated.organization-participants.organization-participant', learnerId);
+ this.router.transitionTo('authenticated.organization-participants.organization-participant', learner.id);
}
}
diff --git a/orga/app/styles/app.scss b/orga/app/styles/app.scss
index 0574d9e9124..d605d0bf51d 100644
--- a/orga/app/styles/app.scss
+++ b/orga/app/styles/app.scss
@@ -60,16 +60,13 @@
@use 'pages/authenticated/campaigns/campaign' as *;
@use 'pages/authenticated/campaigns/create-form' as *;
@use 'pages/authenticated/campaigns/new-item' as *;
-@use 'pages/authenticated/campaigns/list' as *;
@use 'pages/authenticated/campaigns/update' as *;
@use 'pages/authenticated/campaigns/details/activity' as *;
@use 'pages/authenticated/campaigns/details/analysis' as *;
-@use 'pages/authenticated/campaigns/details/assessment-results' as *;
@use 'pages/authenticated/campaigns/details/profile-results' as *;
@use 'pages/authenticated/campaigns/details/participants' as *;
@use 'pages/authenticated/campaigns/details/participants/participant' as *;
@use 'pages/authenticated/campaigns/details/participants/participant/header' as *;
-@use 'pages/authenticated/campaigns/details/participants/participant/results' as *;
@use 'pages/authenticated/campaigns/participant-profile' as *;
@use 'pages/authenticated/certifications' as *;
@use 'pages/authenticated/mission' as *;
diff --git a/orga/app/styles/components/campaign/analysis/recommendations.scss b/orga/app/styles/components/campaign/analysis/recommendations.scss
index 0604037fef8..80503284544 100644
--- a/orga/app/styles/components/campaign/analysis/recommendations.scss
+++ b/orga/app/styles/components/campaign/analysis/recommendations.scss
@@ -2,22 +2,13 @@
@use 'pix-design-tokens/fonts';
.campaign-details-analysis {
- color: var(--pix-neutral-900);
- font-weight: normal;
- letter-spacing: 0;
-
&__header {
@extend %pix-title-xs;
}
&__text {
- margin: 2px 0 29px 0;
- font-size: 0.875rem;
- font-family: fonts.$font-roboto;
- line-height: 1.375rem;
- }
-}
+ @extend %pix-body-s;
-.campaign-details-analysis-section {
- padding: 0;
+ margin-bottom: var(--pix-spacing-4x);
+ }
}
diff --git a/orga/app/styles/components/campaign/analysis/tube-recommendation-row.scss b/orga/app/styles/components/campaign/analysis/tube-recommendation-row.scss
index 00df1b017b2..4d3c361c17a 100644
--- a/orga/app/styles/components/campaign/analysis/tube-recommendation-row.scss
+++ b/orga/app/styles/components/campaign/analysis/tube-recommendation-row.scss
@@ -6,21 +6,13 @@
color: var(--pix-neutral-800);
font-size:0.875rem;
-
- &--open {
- margin-left: var(--pix-spacing-4x);
- }
}
.tube-recommendation-subtitle {
@extend %pix-body-s;
- color: var(--pix-neutral-20)0;
+ color: var(--pix-neutral-500);
font-weight: 400;
-
- &--open {
- color: var(--pix-neutral-500);
- }
}
.tube-recommendation-tutorial {
@@ -36,7 +28,7 @@
&__description {
@extend %pix-title-s;
- margin-bottom: var(--pix-spacing-4x);
+ margin-bottom: var(--pix-spacing-4x) 0;
color: var(--pix-neutral-500);
font-size:0.875rem;
}
@@ -51,34 +43,8 @@
@extend %pix-title-xs;
margin-bottom: var(--pix-spacing-4x);
- padding-left: var(--pix-spacing-6x);
font-weight: 500;
}
-}
-
-.tube-recommendation-tutorial-wrapper {
- max-height: 0;
- overflow: hidden;
- transition: max-height 0s ease;
-
- &--open {
- height: auto;
- max-height: 1000px;
- transition: max-height 1s ease-out;
- }
-}
-
-.tube-recommendation-tutorial-table {
- margin-bottom: var(--pix-spacing-2x);
- margin-left: var(--pix-spacing-6x);
-
- &__row {
- padding-left: 0;
-
- a {
- font-weight: 500;
- }
- }
&__details {
color: var(--pix-neutral-800);
diff --git a/orga/app/styles/components/campaign/index.scss b/orga/app/styles/components/campaign/index.scss
index 56a2c0947df..80654fa459e 100644
--- a/orga/app/styles/components/campaign/index.scss
+++ b/orga/app/styles/components/campaign/index.scss
@@ -19,10 +19,14 @@
@use 'empty-state';
@use 'list-header';
@use 'filters';
-@use 'list';
@use 'no-campaign-panel';
@use 'settings/campaign-settings';
@use 'stage-average';
@use 'target-profile-details';
@use 'detail';
@use 'cards';
+
+.badge--unacquired {
+ opacity: .8;
+ filter: grayscale(1);
+}
diff --git a/orga/app/styles/components/campaign/list.scss b/orga/app/styles/components/campaign/list.scss
deleted file mode 100644
index 6231be5aecf..00000000000
--- a/orga/app/styles/components/campaign/list.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-@use 'pix-design-tokens/shadows';
-
-.campaign-list {
- padding: 0;
-
- &__campaign-link-cell {
- display: flex;
- gap: var(--pix-spacing-2x);
- align-items: center;
- word-break: break-all;
- }
-
- &__item {
- margin-bottom: 18px;
- }
-
- &__table-header-background {
- @extend %pix-shadow-xs;
-
- background: var(--pix-neutral-20);
- }
-}
diff --git a/orga/app/styles/components/certificability/tooltip.scss b/orga/app/styles/components/certificability/tooltip.scss
index 1b32e91f0c9..da5759ea561 100644
--- a/orga/app/styles/components/certificability/tooltip.scss
+++ b/orga/app/styles/components/certificability/tooltip.scss
@@ -3,7 +3,6 @@
.certificability-tooltip {
margin-top: auto;
margin-bottom: auto;
- padding-left: 6px;
fill: var(--pix-neutral-500);
[role='tooltip'] {
diff --git a/orga/app/styles/globals/competences.scss b/orga/app/styles/globals/competences.scss
index 30726d1082c..030beae9aa0 100644
--- a/orga/app/styles/globals/competences.scss
+++ b/orga/app/styles/globals/competences.scss
@@ -1,9 +1,5 @@
@use 'pix-design-tokens/typography';
-.competences-col-name-wrapper {
- display: flex;
-}
-
.competences-col {
&__name {
@extend %pix-title-xs;
@@ -20,63 +16,40 @@
}
&__border {
+ display: flex;
+ flex-direction: column;
+ gap: var(--pix-spacing-2x);
margin-right: 1rem;
- padding: 0.5rem 0;
+ padding: 0.5rem 1rem;
border-style: solid;
- border-width: 1.5px;
- border-radius: 1.5px;
+ border-width: 2px;
+ border-top: transparent;
+ border-right: transparent;
+ border-bottom: transparent;
+ border-radius: 2px;
&--jaffa {
- background: var(--pix-information-light);
border-color: var(--pix-information-light);
}
&--emerald {
- background: var(--pix-content-light);
border-color: var(--pix-content-light);
}
&--cerulean {
- background: var(--pix-communication-light);
border-color: var(--pix-communication-light);
}
&--wild-strawberry {
- background: var(--pix-security-light);
border-color: var(--pix-security-light);
}
&--butterfly-bush {
- background: var(--pix-environment-light);
border-color: var(--pix-environment-light);
}
- &--bottom {
- position: absolute;
- top: 0;
- left: 1rem;
- display: none;
- box-sizing: border-box;
- height: calc(100% - 0.5rem);
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- }
-
- &--top {
- position: absolute;
- left: 1rem;
- box-sizing: border-box;
- height: calc(100% - 0.5rem);
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
- }
-
&--open {
display: block;
}
}
}
-
-.competences-section {
- padding: 0;
-}
diff --git a/orga/app/styles/globals/tables.scss b/orga/app/styles/globals/tables.scss
index 0e5686bb600..fdb5bc8c8f5 100644
--- a/orga/app/styles/globals/tables.scss
+++ b/orga/app/styles/globals/tables.scss
@@ -1,205 +1,21 @@
-@use 'pix-design-tokens/fonts';
+.table {
+ margin-bottom: var(--pix-spacing-4x);
+ overflow: unset;
-table {
- box-sizing: border-box;
- width: 100%;
- table-layout: fixed;
- border-collapse: collapse;
- border-spacing: 0;
-
- .table__input {
- &:focus-within {
- border: 1px solid var(--pix-primary-500);
- }
- }
-
- .table__multi-select {
- > label {
- > input[type='text']::placeholder {
- color: var(--pix-neutral-100);
- }
- }
- }
-}
-
-thead {
- width: 100%;
- color: var(--pix-neutral-900);
-
- th {
- font-weight: 500;
- font-size: 0.875rem;
- font-family: fonts.$font-roboto;
- }
-}
-
-caption {
- padding: 1rem 24px;
- font-weight: bold;
- font-size: 0.9rem;
- text-align: center;
-}
-
-tbody {
- color: var(--pix-neutral-500);
-
- tr {
- &:focus-within,
- &:hover {
- background-color: var(--pix-neutral-20);
- }
- }
-
- tr.tr--clickable {
- cursor: pointer;
-
- &:hover,
- &:focus,
- &:active {
- color: var(--pix-neutral-900);
- background-color: var(--pix-neutral-20);
- transition: 0.25s ease;
- }
- }
-
- th.th--clickable {
- background-color: var(--pix-neutral-0);
-
- &:hover {
- background-color: var(--pix-neutral-20);
- }
- }
-
- td {
- position: relative;
- color: var(--pix-neutral-800);
- font-weight: 400;
- font-size: 0.875rem;
- font-family: fonts.$font-roboto;
-
- &.ellipsis {
- overflow: hidden;
- text-overflow: ellipsis;
- }
-
- > a {
- color: var(--pix-neutral-800);
- text-decoration: none;
-
- &:hover,
- &:focus,
- &:active {
- color: var(--pix-neutral-800);
- }
- }
- }
-}
-
-tr {
- width: 100%;
- height: 60px;
- border-top: 1px solid var(--pix-neutral-20);
-}
-
-td,
-th {
- padding-left: 24px;
- text-align: left;
-}
-
-th::first-letter {
- text-transform: capitalize;
-}
-
-.table__column {
- width: 16%;
-
- col {
- min-width: 100px;
- }
-
- &--last-col {
- padding-left: 0px;
- }
-
- &--center {
- text-align: center;
- }
-
- &--x-small {
- width: 3%;
- }
-
- &--small {
- width: 6%;
- max-width: 150px;
- }
-
- &--break-word {
+ &__link-cell {
+ display: flex;
+ gap: var(--pix-spacing-2x);
+ align-items: center;
word-break: break-all;
}
- &--medium {
- width: 15%;
- }
-
- &--wide {
- width: 25%;
- }
-
- &--x-wide {
- width: 50%;
- }
-
- &--right {
- padding-right: 24px;
- text-align: right;
- }
-
- &--truncated {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
-
- &--sort {
+ &__empty {
display: flex;
align-items: center;
justify-content: center;
-
- .pix-icon-button {
- margin-left: 8px;
- }
-
- &-no-center {
- justify-content: start;
- }
- }
-
- &--highlight {
- color: var(--pix-neutral-800);
- }
-}
-
-@media (max-width: 768px) {
- .table {
- width: 100%;
- overflow-x: auto;
- }
-}
-
-.table__row {
- &--small {
- height: 40px;
+ height: 180px;
+ margin: 0;
+ text-align: center;
+ border-top: 1px solid var(--pix-neutral-20);
}
}
-
-.table__empty {
- display: flex;
- align-items: center;
- justify-content: center;
- height: 180px;
- margin: 0;
- text-align: center;
- border-top: 1px solid var(--pix-neutral-20);
-}
diff --git a/orga/app/styles/pages/authenticated/campaigns/details/activity.scss b/orga/app/styles/pages/authenticated/campaigns/details/activity.scss
index 483b4ddd1e6..27c1f67eae2 100644
--- a/orga/app/styles/pages/authenticated/campaigns/details/activity.scss
+++ b/orga/app/styles/pages/authenticated/campaigns/details/activity.scss
@@ -6,15 +6,10 @@
padding: 0;
}
-.activity__participants-list {
- margin-bottom: 24px;
- padding: 0;
+.warning-text {
+ @extend %pix-body-s;
- .warning-text {
- @extend %pix-body-s;
-
- font-weight: fonts.$font-medium;
- }
+ font-weight: fonts.$font-medium;
}
@media (max-width: 768px) {
diff --git a/orga/app/styles/pages/authenticated/campaigns/details/assessment-results.scss b/orga/app/styles/pages/authenticated/campaigns/details/assessment-results.scss
deleted file mode 100644
index d8011d1c3cf..00000000000
--- a/orga/app/styles/pages/authenticated/campaigns/details/assessment-results.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-.assessment-results {
- &__list {
- padding: 0;
-
- .badge--unacquired {
- opacity: .8;
- filter: grayscale(1);
- }
- }
-}
diff --git a/orga/app/styles/pages/authenticated/campaigns/details/participants/participant/results.scss b/orga/app/styles/pages/authenticated/campaigns/details/participants/participant/results.scss
deleted file mode 100644
index 3930cc81c95..00000000000
--- a/orga/app/styles/pages/authenticated/campaigns/details/participants/participant/results.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-.participant-results {
- width: 100%;
-
- &__details {
- padding: 0;
- }
-}
diff --git a/orga/app/styles/pages/authenticated/campaigns/list.scss b/orga/app/styles/pages/authenticated/campaigns/list.scss
deleted file mode 100644
index 6a67d36b065..00000000000
--- a/orga/app/styles/pages/authenticated/campaigns/list.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.list-campaigns-page {
- display: flex;
- flex-direction: column;
- flex-grow: 1;
- width: 100%;
-}
diff --git a/orga/app/styles/pages/authenticated/campaigns/participant-profile.scss b/orga/app/styles/pages/authenticated/campaigns/participant-profile.scss
index 82cf2ddf0ba..1087381e1b1 100644
--- a/orga/app/styles/pages/authenticated/campaigns/participant-profile.scss
+++ b/orga/app/styles/pages/authenticated/campaigns/participant-profile.scss
@@ -10,8 +10,3 @@
}
}
-.profile-competences {
- margin-bottom: 24px;
- padding: 0;
-}
-
diff --git a/orga/app/styles/pages/authenticated/organization-participants/list.scss b/orga/app/styles/pages/authenticated/organization-participants/list.scss
index 0d140e574b0..1f45eec5c66 100644
--- a/orga/app/styles/pages/authenticated/organization-participants/list.scss
+++ b/orga/app/styles/pages/authenticated/organization-participants/list.scss
@@ -2,42 +2,21 @@
$margin-right: 32px;
-.organization-participant-list-page {
- display: flex;
- flex-direction: column;
- flex-grow: 1;
- width: 100%;
-
+.organization-participant {
&__last-participation {
display: flex;
gap: var(--pix-spacing-2x);
justify-content: center;
}
- &__certificability-header {
- display: flex;
+ &__align-element {
+ display: inline-flex;
+ gap:var(--pix-spacing-2x);
justify-content: center;
- }
-
- &__header-with-tooltip {
- display: flex;
-
- .pix-tooltip {
- margin-left: 5px;
- &__trigger-element {
- display: flex;
- }
- }
- }
-
- &__actions-header {
- width: 10%;
-
- @include breakpoints.device-is('tablet') {
- padding-right: 12px;
- padding-left: 0;
- text-align: right;
+ &--column {
+ flex-direction:column;
+ align-items: center;
}
}
diff --git a/orga/app/templates/authenticated/campaigns/campaign/activity.hbs b/orga/app/templates/authenticated/campaigns/campaign/activity.hbs
index 39a35c6b992..15dd8823e5f 100644
--- a/orga/app/templates/authenticated/campaigns/campaign/activity.hbs
+++ b/orga/app/templates/authenticated/campaigns/campaign/activity.hbs
@@ -23,7 +23,6 @@
@onResetFilter={{this.resetFiltering}}
@deleteCampaignParticipation={{this.deleteCampaignParticipation}}
@showParticipationCount={{@model.campaign.multipleSendings}}
- class="activity__participants-list"
/>
{{else}}
{{#if this.isGarAuthenticationMethod}}
diff --git a/orga/app/templates/authenticated/campaigns/campaign/assessment-results.hbs b/orga/app/templates/authenticated/campaigns/campaign/assessment-results.hbs
index 160d92ed790..2561cf610d2 100644
--- a/orga/app/templates/authenticated/campaigns/campaign/assessment-results.hbs
+++ b/orga/app/templates/authenticated/campaigns/campaign/assessment-results.hbs
@@ -26,7 +26,6 @@
@onClickParticipant={{this.goToAssessmentPage}}
@onFilter={{this.triggerFiltering}}
@onResetFilter={{this.resetFiltering}}
- class="assessment-results__list"
/>
{{else}}
{{#if this.isGarAuthenticationMethod}}
diff --git a/orga/app/templates/authenticated/missions/list.hbs b/orga/app/templates/authenticated/missions/list.hbs
index 9eba77c0346..0db3f988736 100644
--- a/orga/app/templates/authenticated/missions/list.hbs
+++ b/orga/app/templates/authenticated/missions/list.hbs
@@ -67,48 +67,44 @@
{{#if @model.missions}}
-
+
+ <:columns as |mission context|>
+
+ <:header>{{t "pages.missions.list.headers.name"}}
+ <:cell>{{mission.name}}
+
-
- {{t "pages.missions.list.caption"}}
-
-
- {{t "pages.missions.list.headers.name"}}
- {{t "pages.missions.list.headers.competences"}}
- {{t "pages.missions.list.headers.started-by"}}
- {{t "pages.missions.list.headers.actions"}}
-
-
-
- {{#each @model.missions as |mission|}}
-
-
- {{mission.name}}
- |
-
- {{mission.competenceName}}
- |
-
- {{#if (eq mission.startedBy "")}}
- {{t "pages.missions.list.no-division"}}
- {{else}}
- {{mission.startedBy}}
- {{/if}}
- |
-
-
- {{t "pages.missions.list.actions.see-mission-details"}}
-
- |
-
- {{/each}}
-
-
-
+
+ <:header>{{t "pages.missions.list.headers.competences"}}
+ <:cell>{{mission.competenceName}}
+
+
+
+ <:header>{{t "pages.missions.list.headers.started-by"}}
+ <:cell>
+ {{#if (eq mission.startedBy "")}}
+ {{t "pages.missions.list.no-division"}}
+ {{else}}
+ {{mission.startedBy}}
+ {{/if}}
+
+
+
+
+ <:header>{{t "pages.missions.list.headers.actions"}}
+ <:cell>
+
+ {{t "pages.missions.list.actions.see-mission-details"}}
+
+
+
+
+
{{else}}
diff --git a/orga/tests/integration/components/organization-participant/table-row_test.gjs b/orga/tests/integration/components/organization-participant/table-row_test.gjs
deleted file mode 100644
index 2d62e457550..00000000000
--- a/orga/tests/integration/components/organization-participant/table-row_test.gjs
+++ /dev/null
@@ -1,313 +0,0 @@
-import { render } from '@1024pix/ember-testing-library';
-import Service from '@ember/service';
-import { t } from 'ember-intl/test-support';
-import TableRow from 'pix-orga/components/organization-participant/table-row';
-import { module, test } from 'qunit';
-import sinon from 'sinon';
-
-import setupIntlRenderingTest from '../../../helpers/setup-intl-rendering';
-
-module('Integration | Component | OrganizationParticipant | TableRow', function (hooks) {
- setupIntlRenderingTest(hooks);
- hooks.beforeEach(function () {
- class CurrentUserStub extends Service {
- prescriber = { missionsManagement: true };
- }
- this.owner.register('service:current-user', CurrentUserStub);
- });
-
- module('common cases', function () {
- test('should display common column', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.ok(screen.queryByText('Jean'));
- assert.ok(screen.queryByText('Bon'));
- assert.ok(screen.queryByText(1));
- });
-
- test('should have a link on participant lastname to redirect on his page if hasOrganizationParticipantPage', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- id: 777,
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.dom(screen.getByRole('link', { name: 'Bon' })).hasAttribute('href', '/participants/777');
- });
- test('should not have a link on participant lastname if not hasOrganizationParticipantPage', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- id: 777,
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.dom(screen.queryByRole('link', { name: 'Bon' })).doesNotExist();
- assert.dom(screen.queryByRole('cell', { name: 'Bon' })).exists();
- });
- });
-
- module('selection cases', function () {
- test('hide checkbox when selection is disabled', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.notOk(
- screen.queryByRole('checkbox', {
- name: t('pages.organization-participants.table.column.checkbox', {
- firstname: participant.firstName,
- lastname: participant.lastName,
- }),
- }),
- );
- });
-
- test('show checkbox when selection is enabled', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.ok(
- screen.getByRole('checkbox', {
- name: t('pages.organization-participants.table.column.checkbox', {
- firstname: participant.firstName,
- lastname: participant.lastName,
- }),
- }),
- );
- });
- });
-
- module('certificability cases', function () {
- module('when hideCertifiableDate is true', function () {
- test('it should not display certifiableAt date', async function (assert) {
- // given
- const certifiableDate = '10/10/2023';
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- isCertifiable: true,
- certifiableAt: new Date(certifiableDate),
- };
-
- const hideCertifiableDate = true;
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.notOk(screen.queryByText(certifiableDate));
- });
- });
-
- module('when hideCertifiableDate is false', function () {
- test('it display certifiableAt date', async function (assert) {
- // given
- const certifiableDate = '10/10/2023';
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- isCertifiable: true,
- certifiableAt: new Date(certifiableDate),
- };
- const hideCertifiableDate = false;
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.ok(screen.getByText(certifiableDate));
- });
- });
- });
-
- module('extra columns cases', function () {
- test('should not display extra column when not defined', async function (assert) {
- const noop = sinon.stub();
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- extraColumns: {
- 'awesome.key': 'awesome value',
- },
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.notOk(screen.queryByText('awesome'));
- });
-
- test('should display extra column when defined', async function (assert) {
- const noop = sinon.stub();
- const customRows = ['awesome.key'];
- const participant = {
- firstName: 'Jean',
- lastName: 'Bon',
- participationCount: 1,
- extraColumns: {
- 'awesome.key': 'awesome value',
- },
- };
-
- // when
- const screen = await render(
-
-
- ,
- );
-
- // then
- assert.ok(screen.queryByText('awesome value'));
- });
- });
-});
diff --git a/orga/tests/unit/controllers/authenticated/campaigns/list/all-campaigns-test.js b/orga/tests/unit/controllers/authenticated/campaigns/list/all-campaigns-test.js
index 1c6216aff9b..162bca828cc 100644
--- a/orga/tests/unit/controllers/authenticated/campaigns/list/all-campaigns-test.js
+++ b/orga/tests/unit/controllers/authenticated/campaigns/list/all-campaigns-test.js
@@ -7,11 +7,6 @@ module('Unit | Controller | authenticated/campaigns/list/all-campaigns', functio
setupIntlRenderingTest(hooks);
let controller;
- const event = {
- preventDefault: sinon.stub(),
- stopPropagation: sinon.stub(),
- };
-
hooks.beforeEach(function () {
controller = this.owner.lookup('controller:authenticated/campaigns/list/all-campaigns');
});
@@ -22,10 +17,9 @@ module('Unit | Controller | authenticated/campaigns/list/all-campaigns', functio
controller.router = { transitionTo: sinon.stub() };
// when
- controller.send('goToCampaignPage', 123, event);
+ controller.send('goToCampaignPage', { id: 123 });
// then
- assert.true(event.preventDefault.called);
assert.true(controller.router.transitionTo.calledWith('authenticated.campaigns.campaign', 123));
});
});
diff --git a/orga/tests/unit/controllers/authenticated/campaigns/list/my-campaigns-test.js b/orga/tests/unit/controllers/authenticated/campaigns/list/my-campaigns-test.js
index a3491fdad0e..20e35b80060 100644
--- a/orga/tests/unit/controllers/authenticated/campaigns/list/my-campaigns-test.js
+++ b/orga/tests/unit/controllers/authenticated/campaigns/list/my-campaigns-test.js
@@ -1,4 +1,5 @@
import { module, test } from 'qunit';
+import sinon from 'sinon';
import setupIntlRenderingTest from '../../../../../helpers/setup-intl-rendering';
@@ -52,5 +53,18 @@ module('Unit | Controller | authenticated/campaigns/list/all-campaigns', functio
assert.strictEqual(controller.someField, undefined);
});
});
+
+ module('#action goToCampaignPage', function () {
+ test('it should call transitionTo with appropriate arguments', function (assert) {
+ // given
+ controller.router = { transitionTo: sinon.stub() };
+
+ // when
+ controller.send('goToCampaignPage', { id: 123 });
+
+ // then
+ assert.true(controller.router.transitionTo.calledWith('authenticated.campaigns.campaign', 123));
+ });
+ });
});
});