From 5724890a45a2432f10b324582871aa83368beb52 Mon Sep 17 00:00:00 2001
From: ClientCrash <40364569+ClientCrash@users.noreply.github.com>
Date: Sun, 6 Mar 2022 11:20:17 +0100
Subject: [PATCH] Added Button Base Component (#275)
---
ComponentDocs.md | 31 ++++++++++
src/app/design/design.module.ts | 4 +-
.../styled-button.component.html | 1 +
.../styled-button.component.scss | 59 +++++++++++++++++++
.../styled-button.component.spec.ts | 25 ++++++++
.../styled-button/styled-button.component.ts | 17 ++++++
src/global-styles/_theme-colors.scss | 24 ++++++++
7 files changed, 160 insertions(+), 1 deletion(-)
create mode 100644 ComponentDocs.md
create mode 100644 src/app/design/styled-button/styled-button.component.html
create mode 100644 src/app/design/styled-button/styled-button.component.scss
create mode 100644 src/app/design/styled-button/styled-button.component.spec.ts
create mode 100644 src/app/design/styled-button/styled-button.component.ts
create mode 100644 src/global-styles/_theme-colors.scss
diff --git a/ComponentDocs.md b/ComponentDocs.md
new file mode 100644
index 00000000..cbd08e27
--- /dev/null
+++ b/ComponentDocs.md
@@ -0,0 +1,31 @@
+# Cryptic Components
+
+
+Style classes :
+- primary
+- success
+- warning
+- danger
+- info
+
+---
+
+## Button
+
+### Example
+
+```html
+ Log in
+ ```
+
+---
+
+## Radio Button
+
+### Example
+
+```html
+// ADD EXAMPLES FOR ALL THE DEFAULT COMPONENTS //
+```
+
+---
diff --git a/src/app/design/design.module.ts b/src/app/design/design.module.ts
index e1363b11..1607d7a7 100644
--- a/src/app/design/design.module.ts
+++ b/src/app/design/design.module.ts
@@ -3,12 +3,14 @@ import {CommonModule} from '@angular/common';
import {ButtonComponent} from './button/button.component';
import {TextFieldComponent} from './text-field/text-field.component';
import {FormGroupComponent} from './form-group/form-group.component';
+import {StyledButtonComponent} from './styled-button/styled-button.component';
@NgModule({
declarations: [
ButtonComponent,
TextFieldComponent,
- FormGroupComponent
+ FormGroupComponent,
+ StyledButtonComponent
],
imports: [
CommonModule
diff --git a/src/app/design/styled-button/styled-button.component.html b/src/app/design/styled-button/styled-button.component.html
new file mode 100644
index 00000000..a8821237
--- /dev/null
+++ b/src/app/design/styled-button/styled-button.component.html
@@ -0,0 +1 @@
+
diff --git a/src/app/design/styled-button/styled-button.component.scss b/src/app/design/styled-button/styled-button.component.scss
new file mode 100644
index 00000000..1175d014
--- /dev/null
+++ b/src/app/design/styled-button/styled-button.component.scss
@@ -0,0 +1,59 @@
+@use "sass:list";
+@import "theme-colors";
+
+$flavors: (
+ primary: (
+ $primary-default,
+ $primary-hover,
+ $primary-disabled,
+ ),
+ success: (
+ $success-default,
+ $success-hover,
+ $success-disabled,
+ ),
+ warning: (
+ $warning-default,
+ $warning-hover,
+ $warning-disabled,
+ ),
+ danger: (
+ $danger-default,
+ $danger-hover,
+ $danger-disabled,
+ ),
+ info: (
+ $info-default,
+ $info-hover,
+ $info-disabled,
+ ),
+);
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ width: 100%;
+ color: white;
+ border: none;
+ font-size: 16px;
+ margin-right: 10px;
+ &:last-child {
+ margin-right: 0;
+ }
+
+ @each $name, $colors in $flavors {
+ &.#{$name} {
+ color: #2f2f36;
+ background: list.nth($colors, 1);
+
+ &:disabled {
+ background-color: list.nth($colors, 3);
+ }
+
+ &:hover {
+ background-color: list.nth($colors, 2);
+ color: white;
+ }
+ }
+ }
+}
diff --git a/src/app/design/styled-button/styled-button.component.spec.ts b/src/app/design/styled-button/styled-button.component.spec.ts
new file mode 100644
index 00000000..ca36cb31
--- /dev/null
+++ b/src/app/design/styled-button/styled-button.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StyledButtonComponent } from './styled-button.component';
+
+describe('StyledButtonComponent', () => {
+ let component: StyledButtonComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ StyledButtonComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(StyledButtonComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/design/styled-button/styled-button.component.ts b/src/app/design/styled-button/styled-button.component.ts
new file mode 100644
index 00000000..f3521984
--- /dev/null
+++ b/src/app/design/styled-button/styled-button.component.ts
@@ -0,0 +1,17 @@
+import { Component, EventEmitter, Input, Output } from '@angular/core';
+
+export type ButtonFlavor = 'primary' | 'success' | 'warning' | 'danger' | 'info';
+
+@Component({
+ selector: 'app-styled-button',
+ templateUrl: './styled-button.component.html',
+ styleUrls: ['./styled-button.component.scss']
+})
+export class StyledButtonComponent {
+
+ @Input() public disabled = false;
+ @Input() public flavor: ButtonFlavor = 'primary';
+
+ // tslint:disable-next-line: no-output-on-prefix
+ @Output() public onClick = new EventEmitter();
+}
diff --git a/src/global-styles/_theme-colors.scss b/src/global-styles/_theme-colors.scss
new file mode 100644
index 00000000..f923211d
--- /dev/null
+++ b/src/global-styles/_theme-colors.scss
@@ -0,0 +1,24 @@
+/*primary*/
+$primary-default: #2ECC70;
+$primary-hover: #1F8C4C;
+$primary-disabled: #2E473E;
+/*success*/
+$success-default: #3ABB18;
+$success-hover: #277A10;
+$success-disabled: #2F5629;
+/*warning*/
+$warning-default: #F1C30E;
+$warning-hover: #B3910B;
+$warning-disabled: #675926;
+/*danger*/
+$danger-default: #F00040;
+$danger-hover: #B0002F;
+$danger-disabled: #671E35;
+/*info*/
+$info-default: #3281F6;
+$info-hover: #245EB5;
+$info-disabled: #2D456C;
+/*etc*/
+$logo-crypt: #27A036
+/* ISSUE : #260 */
+