diff --git a/angular.json b/angular.json
index dda8b7a..e369ac7 100644
--- a/angular.json
+++ b/angular.json
@@ -5,6 +5,11 @@
"projects": {
"sdg": {
"projectType": "library",
+ "schematics": {
+ "@schematics/angular:component": {
+ "style": "scss"
+ }
+ },
"root": "packages/sdg",
"sourceRoot": "packages/sdg",
"prefix": "sdg",
@@ -28,10 +33,7 @@
"builder": "@angular-devkit/build-angular:karma",
"options": {
"tsConfig": "packages/sdg/tsconfig.spec.json",
- "polyfills": [
- "zone.js",
- "zone.js/testing"
- ],
+ "polyfills": ["zone.js", "zone.js/testing"],
"codeCoverage": true,
"progress": true
}
diff --git a/packages/sdg/src/lib/button/button.component.spec.ts b/packages/sdg/src/lib/button/button.component.spec.ts
new file mode 100644
index 0000000..6bf5a00
--- /dev/null
+++ b/packages/sdg/src/lib/button/button.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TEST_CONFIG } from '../../test-config';
+import { ButtonComponent } from './button.component';
+
+describe('ButtonComponent', () => {
+ let component: ButtonComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [ButtonComponent],
+ providers: [...TEST_CONFIG.providers!]
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(ButtonComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/packages/sdg/src/lib/button/button.component.ts b/packages/sdg/src/lib/button/button.component.ts
new file mode 100644
index 0000000..643a91c
--- /dev/null
+++ b/packages/sdg/src/lib/button/button.component.ts
@@ -0,0 +1,107 @@
+import { Component, Directive, input, output } from '@angular/core';
+import { MatButtonModule } from '@angular/material/button';
+
+type ButtonColor = 'primary' | 'accent' | 'warn';
+
+@Directive()
+class ButtonBase {
+ color = input();
+ disableRipple = input();
+
+ click = output();
+
+ handleClick(event: Event) {
+ event.stopImmediatePropagation();
+ this.click.emit();
+ }
+}
+
+@Component({
+ selector: 'sdg-button-icon',
+ standalone: true,
+ imports: [MatButtonModule],
+ styleUrl: './button.scss',
+ template: `
+
+ `
+})
+export class IconButtonComponent extends ButtonBase {}
+
+@Component({
+ selector: 'sdg-button-raised',
+ standalone: true,
+ imports: [MatButtonModule],
+ styleUrl: './button.scss',
+ template: `
+
+ `
+})
+export class ButtonRaisedComponent extends ButtonBase {}
+
+@Component({
+ selector: 'sdg-button-flat',
+ standalone: true,
+ imports: [MatButtonModule],
+ styleUrl: './button.scss',
+ template: `
+
+ `
+})
+export class ButtonFlatComponent extends ButtonBase {}
+
+@Component({
+ selector: 'sdg-button-stroked',
+ standalone: true,
+ imports: [MatButtonModule],
+ styleUrl: './button.scss',
+ template: `
+
+ `
+})
+export class ButtonStrokedComponent extends ButtonBase {}
+
+@Component({
+ selector: 'sdg-button',
+ standalone: true,
+ imports: [MatButtonModule],
+ styleUrl: './button.scss',
+ template: `
+
+ `
+})
+export class ButtonComponent extends ButtonBase {}
diff --git a/packages/sdg/src/lib/button/button.scss b/packages/sdg/src/lib/button/button.scss
new file mode 100644
index 0000000..49be42e
--- /dev/null
+++ b/packages/sdg/src/lib/button/button.scss
@@ -0,0 +1,7 @@
+:host {
+ pointer-events: none;
+}
+
+button {
+ pointer-events: all;
+}
diff --git a/packages/sdg/src/lib/button/index.ts b/packages/sdg/src/lib/button/index.ts
new file mode 100644
index 0000000..643ee81
--- /dev/null
+++ b/packages/sdg/src/lib/button/index.ts
@@ -0,0 +1 @@
+export * from './button.component';
diff --git a/packages/sdg/src/public-api.ts b/packages/sdg/src/public-api.ts
index 34fe700..ed330ee 100644
--- a/packages/sdg/src/public-api.ts
+++ b/packages/sdg/src/public-api.ts
@@ -3,6 +3,7 @@
*/
export * from './lib/breadcrumb';
+export * from './lib/button';
export * from './lib/header';
export * from './lib/navigation';
export * from './lib/screen';
diff --git a/projects/demo/src/app/pages/components/showcases/button/button.component.html b/projects/demo/src/app/pages/components/showcases/button/button.component.html
index cbb84d6..c5a5daf 100644
--- a/projects/demo/src/app/pages/components/showcases/button/button.component.html
+++ b/projects/demo/src/app/pages/components/showcases/button/button.component.html
@@ -11,15 +11,6 @@
/>
du Système de design gouvernemental.
-
- Le concept de bouton est basé sur le
-
- . Voici quelques uns des types de boutons.
-
-
-
-
-
+ Raised
+ Stroked
+ Basic
+ Flat
@@ -38,15 +35,27 @@
"color" tout en respectant le thème de l'application.
-
-
-
+ Primaire
+ Accent
+ Avertissement
Pour répliquer l'exemple du SDG:
-
-
-
-
+ Principal
+ Secondaire
+ Tertiaire
+ Avertissement
diff --git a/projects/demo/src/app/pages/components/showcases/button/button.component.scss b/projects/demo/src/app/pages/components/showcases/button/button.component.scss
index 1b0daa2..a69adb6 100644
--- a/projects/demo/src/app/pages/components/showcases/button/button.component.scss
+++ b/projects/demo/src/app/pages/components/showcases/button/button.component.scss
@@ -1,5 +1,5 @@
.button-types {
- button {
+ ::ng-deep button {
margin-right: 16px;
}
}
diff --git a/projects/demo/src/app/pages/components/showcases/button/button.component.ts b/projects/demo/src/app/pages/components/showcases/button/button.component.ts
index 1b67d21..f280cd2 100644
--- a/projects/demo/src/app/pages/components/showcases/button/button.component.ts
+++ b/projects/demo/src/app/pages/components/showcases/button/button.component.ts
@@ -1,5 +1,11 @@
import { Component } from '@angular/core';
-import { MatButton } from '@angular/material/button';
+
+import {
+ ButtonComponent,
+ ButtonFlatComponent,
+ ButtonRaisedComponent,
+ ButtonStrokedComponent
+} from '@igo2/sdg';
import { ExampleViewerComponent } from '../../../../components/example-viewer/example-viewer.component';
import { ExternalLinkComponent } from '../../../../components/external-link/external-link.component';
@@ -7,8 +13,19 @@ import { ExternalLinkComponent } from '../../../../components/external-link/exte
@Component({
selector: 'app-button',
standalone: true,
- imports: [ExampleViewerComponent, MatButton, ExternalLinkComponent],
+ imports: [
+ ExampleViewerComponent,
+ ButtonComponent,
+ ButtonStrokedComponent,
+ ButtonRaisedComponent,
+ ButtonFlatComponent,
+ ExternalLinkComponent
+ ],
templateUrl: './button.component.html',
styleUrl: './button.component.scss'
})
-export class ButtonDemoComponent {}
+export class ButtonDemoComponent {
+ handleClick() {
+ alert('Button clicked!');
+ }
+}