Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(various): various changes #11

Merged
merged 10 commits into from
Aug 27, 2024
Merged
2 changes: 1 addition & 1 deletion packages/sdg/src/lib/alert/alert.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<div class="message" [class.--is-handset]="isHandset()">
{{ message() }}
</div>
@if (closeable()) {
@if (isCloseable()) {
<button
mat-icon-button
class="close"
Expand Down
25 changes: 23 additions & 2 deletions packages/sdg/src/lib/alert/alert.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,10 @@ import { AlertIcon, AlertType } from './alert.interface';
})
export class AlertComponent {
type = input.required<keyof typeof AlertType>();
message = input.required<string>();
closeable = input<boolean>(false);
message = input.required<string, string>({
transform: (message) => this.messageValidation(message)
});
isCloseable = input<boolean>(false);
isOpen = input<boolean>(true);
isHandset = input<boolean>();

Expand All @@ -40,6 +42,22 @@ export class AlertComponent {
iconName = computed(() => AlertIcon[this.type()]);
typeName = computed(() => AlertType[this.type()]);

private messageValidation(message: string): string {
if (this.isCloseable()) {
if (message.length > 105) {
return `${message.slice(0, 105)}...`;
}

return message;
} else {
if (message.length > 120) {
return `${message.slice(0, 120)}...`;
}

return message;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On pourrait améliorer la lisbilité en utilisant les "early return" pour éviter les conditions imbriqués

Suggested change
if (this.isCloseable()) {
if (message.length > 105) {
return `${message.slice(0, 105)}...`;
}
return message;
} else {
if (message.length > 120) {
return `${message.slice(0, 120)}...`;
}
return message;
}
if (this.isCloseable() && message.length > 105) {
return `${message.slice(0, 105)}...`;
}
if (message.length > 120) {
return `${message.slice(0, 120)}...`;
}
return message;

}

getAlertClass() {
return `container --${this.typeName()}`;
}
Expand All @@ -49,6 +67,9 @@ export class AlertComponent {
}

onClose() {
if (this.isCloseable()) {
console.log('hello');
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supprimer les console.log

this.closed.emit(true);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
span {
margin-right: 4px;
margin-right: 2px;
}

mat-icon {
width: 12px;
height: 12px;
font-size: 12px;
width: 13px;
height: 13px;
font-size: 13px;
margin-right: 2px;
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<sdg-alert
type="General"
message="Ceci est une alerte informative pouvant être fermée"
[closeable]="true"
[isCloseable]="true"
[isOpen]="generalAlertIsOpen"
[isHandset]="isHandset()"
(closed)="generalAlertIsOpen = false"
Expand All @@ -38,7 +38,7 @@
<sdg-alert
type="Warning"
message="Ceci est une alerte pouvant être fermée"
[closeable]="true"
[isCloseable]="true"
[isOpen]="alertIsOpen"
[isHandset]="isHandset()"
(closed)="alertIsOpen = false"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,39 @@
<p>
Deux types de breadcrumbs, celui qui utilise l'autogénération basé sur le
Router d'Angular et le manuel ou on peut spécifier les breads via l'input.
<span
>Le fil d’Ariane (ou breadcrumbs) est essentiel sur les sites où les pages
sont organisées hiérarchiquement, tels que les sites d'information, de
commerce électronique et de dossiers en ligne. Pour plus d'information, voir
le
</span>
<span
><app-external-link
title="Fil d'Ariane"
link="https://design.quebec.ca/design/composants/navigation/fil-ariane"
/></span>
<span>du Système de design gouvernemental.</span>
</p>
<p>
Deux types de fils d'Ariane sont disponibles: un premier qui utilise
l'autogénération basé sur le Router d'Angular et un second, manuel, où on peut
spécifier les éléments via l'input.
</p>

<p>Pour utiliser l'autogénération, activer la propriété [withRouter]="true"</p>

<app-example-viewer
title="Breadcrumbs with Angular Router"
title="Fil d'Ariane avec Angular Router"
configFolder="breadcrumb"
codeFolder="breadcrumb"
>
<sdg-breadcrumbs [withRouter]="true"></sdg-breadcrumbs>
</app-example-viewer>

<p>
Pour référencer manuellement les breadcrumbs, utiliser le input
Pour référencer manuellement les éléments du fils, on utilise le input
[breadcrumbs]="YOUR_BREADCRUMBS". L'overflow via les ... est ajouté lorsqu'on
5 niveaux ou plus.
a 5 niveaux ou plus.
</p>
<app-example-viewer
title="Breadcrumbs with Angular Router"
title="Fil d'Ariane manuel"
configFolder="breadcrumb"
codeFolder="breadcrumb"
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,44 @@ import { Component } from '@angular/core';
import { Breadcrumb, BreadcrumbsComponent } from '@igo2/sdg';

import { ExampleViewerComponent } from '../../../../components/example-viewer/example-viewer.component';
import { ExternalLinkComponent } from '../../../../components/external-link/external-link.component';

@Component({
selector: 'app-breadcrumb',
standalone: true,
imports: [ExampleViewerComponent, BreadcrumbsComponent],
imports: [
ExampleViewerComponent,
BreadcrumbsComponent,
ExternalLinkComponent
],
templateUrl: './breadcrumb.component.html',
styleUrl: './breadcrumb.component.scss'
})
export class BreadcrumbComponent {
breadcrumbs: Breadcrumb[] = [
{
title: 'first',
url: 'first'
title: 'premier',
url: 'premier'
},
{
title: 'two',
url: 'two'
title: 'deuxième',
url: 'deuxième'
},
{
title: 'three',
url: 'three'
title: 'troisième',
url: 'troisième'
},
{
title: 'four',
url: 'four'
title: 'quatrième',
url: 'quatrième'
},
{
title: 'fifth',
url: 'fifth'
title: 'cinquième',
url: 'cinquième'
},
{
title: 'six',
url: 'six'
title: 'sixième',
url: 'sixième'
}
];
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
<p>
<span>Le concept de bouton est basé sur le&nbsp;</span>
<span><app-external-link
title="bouton d'Angular Material"
link="https://material.angular.io/components/button/overview"
<span
>Les boutons indiquent les actions qui peuvent être exécutées sur une page.
Le libellé d’un bouton annonce l'action qui se produit lorsque l'utilisateur
interagit avec celui-ci. Pour plus d'information, voir le
</span>
<span
><app-external-link
title="Bouton"
link="https://design.quebec.ca/design/composants/boutons"
/></span>
<span>du Système de design gouvernemental.</span>
</p>
<p>
<span>Le concept de bouton est basé sur le </span>
<span
><app-external-link
title="bouton d'Angular Material"
link="https://material.angular.io/components/button/overview"
/></span>
<span>. Voici quelques uns des types de boutons.</span>
</p>
Expand All @@ -20,17 +34,17 @@
</app-example-viewer>

<p>
Material offre la possibilité de controler la couleur via la propriété "color"
tout en respectant le thème de l'application.
Angular Material offre la possibilité de contrôler la couleur via la propriété
"color" tout en respectant le thème de l'application.
</p>
<app-example-viewer title="Couleurs" class="button-types">
<button mat-flat-button color="primary">Primaire</button>
<button mat-flat-button color="accent">Accent</button>
<button mat-flat-button color="warn">Avertissement</button>
</app-example-viewer>

<p>Pour répliquer l'example de Quebec.ca:</p>
<app-example-viewer title="Types de boutons (Quebec.ca)" class="button-types">
<p>Pour répliquer l'exemple du SDG:</p>
<app-example-viewer title="Types de boutons (SDG)" class="button-types">
<button mat-raised-button color="primary">Principal</button>
<button mat-stroked-button color="primary">Secondaire</button>
<button mat-button color="primary">Tertiaire</button>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
p span {
display: inline-flex;
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ export const routes: INavigationRoutes = [
import('./notice/notice.component').then((m) => m.NoticeDemoComponent)
},
{
path: 'breadcrumb',
title: 'Breadcrumb',
path: 'bouton',
title: 'Bouton',
loadComponent: () =>
import('./button/button.component').then((m) => m.ButtonComponent)
},
{
path: 'fil-ariane',
title: "Fil d'Ariane",
loadComponent: () =>
import('./breadcrumb/breadcrumb.component').then(
(m) => m.BreadcrumbComponent
)
},
{
path: 'button',
title: 'Button',
loadComponent: () =>
import('./button/button.component').then((m) => m.ButtonComponent)
}
];