From e63812f01172c11c61f0f72b73f47f29959e299b Mon Sep 17 00:00:00 2001 From: tibing Date: Thu, 7 Jul 2016 15:25:08 +0300 Subject: [PATCH 1/2] feat(ba-checkbox): create checkbox component --- .../checkboxInputs.component.ts | 3 ++ .../checkboxInputs/checkboxInputs.html | 21 ++---------- .../baCheckbox/baCheckbox.component.ts | 32 +++++++++++++++++++ .../components/baCheckbox/baCheckbox.html | 8 +++++ src/app/theme/components/baCheckbox/index.ts | 1 + src/app/theme/components/index.ts | 2 ++ 6 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 src/app/theme/components/baCheckbox/baCheckbox.component.ts create mode 100644 src/app/theme/components/baCheckbox/baCheckbox.html create mode 100644 src/app/theme/components/baCheckbox/index.ts diff --git a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts index c6a0194d..0b2f4c1d 100644 --- a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts +++ b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts @@ -1,11 +1,14 @@ import {Component} from '@angular/core'; +import {BaCheckbox} from '../../../../../../theme/components'; @Component({ selector: 'checkbox-inputs', template: require('./checkboxInputs.html'), + directives: [BaCheckbox] }) export class CheckboxInputs { constructor() { } + } diff --git a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html index 04ae9ab1..5e5f3c69 100644 --- a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html +++ b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html @@ -1,23 +1,8 @@
-
- -
-
- -
-
- -
+ + +
diff --git a/src/app/theme/components/baCheckbox/baCheckbox.component.ts b/src/app/theme/components/baCheckbox/baCheckbox.component.ts new file mode 100644 index 00000000..fcdd6b66 --- /dev/null +++ b/src/app/theme/components/baCheckbox/baCheckbox.component.ts @@ -0,0 +1,32 @@ +import {Component, Provider, forwardRef, Input} from "@angular/core"; +import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/common"; + +const BA_CHECKBOX_CONTROL_VALUE_ACCESSOR = new Provider( + NG_VALUE_ACCESSOR, { + useExisting: forwardRef(() => BaCheckbox), + multi: true + }); + +@Component({ + selector: 'ba-checkbox', + template: require('./baCheckbox.html'), + providers: [BA_CHECKBOX_CONTROL_VALUE_ACCESSOR] +}) +export class BaCheckbox implements ControlValueAccessor { + @Input() disabled:boolean; + @Input() label:string; + @Input() value:string; + @Input() name:string; + @Input() baCheckboxClass:string; + + public state: boolean; + + onChange(value: any): void {} + onTouch(value: any): void {} + writeValue(value: any): void { + this.state = value; + } + + registerOnChange(fn: any): void { this.onChange = fn; } + registerOnTouched(fn: any): void { this.onTouch = fn; } +} diff --git a/src/app/theme/components/baCheckbox/baCheckbox.html b/src/app/theme/components/baCheckbox/baCheckbox.html new file mode 100644 index 00000000..7ed7e5a3 --- /dev/null +++ b/src/app/theme/components/baCheckbox/baCheckbox.html @@ -0,0 +1,8 @@ +
+ +
diff --git a/src/app/theme/components/baCheckbox/index.ts b/src/app/theme/components/baCheckbox/index.ts new file mode 100644 index 00000000..5bd11d98 --- /dev/null +++ b/src/app/theme/components/baCheckbox/index.ts @@ -0,0 +1 @@ +export * from './baCheckbox.component'; diff --git a/src/app/theme/components/index.ts b/src/app/theme/components/index.ts index a96111fc..f679c5ff 100644 --- a/src/app/theme/components/index.ts +++ b/src/app/theme/components/index.ts @@ -9,3 +9,5 @@ export * from './baChartistChart'; export * from './baBackTop'; export * from './baFullCalendar'; export * from './baPictureUploader'; +export * from './baCheckbox'; + From 70cdff101fbf94fec40c64c7b1d5a7b8aaa5cd16 Mon Sep 17 00:00:00 2001 From: tibing Date: Fri, 8 Jul 2016 17:00:07 +0300 Subject: [PATCH 2/2] feat(inputs\multi-checkbox): add multi-checkbox directive --- .../checkboxInputs.component.ts | 26 +++- .../checkboxInputs/checkboxInputs.html | 9 +- .../validationInputs.component.ts | 22 +++ .../validationInputs/validationInputs.html | 26 +--- .../baCheckbox/baCheckbox.component.ts | 40 +++--- .../components/baCheckbox/baCheckbox.html | 2 +- .../components/baCheckbox/baCheckbox.scss | 128 ++++++++++++++++++ .../baMultiCheckbox.component.ts | 45 ++++++ .../baMultiCheckbox/baMultiCheckbox.html | 10 ++ .../theme/components/baMultiCheckbox/index.ts | 1 + src/app/theme/components/index.ts | 2 +- src/app/theme/sass/_form.scss | 53 ++------ 12 files changed, 270 insertions(+), 94 deletions(-) create mode 100644 src/app/theme/components/baCheckbox/baCheckbox.scss create mode 100644 src/app/theme/components/baMultiCheckbox/baMultiCheckbox.component.ts create mode 100644 src/app/theme/components/baMultiCheckbox/baMultiCheckbox.html create mode 100644 src/app/theme/components/baMultiCheckbox/index.ts diff --git a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts index 0b2f4c1d..514ba808 100644 --- a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts +++ b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.component.ts @@ -1,14 +1,34 @@ import {Component} from '@angular/core'; -import {BaCheckbox} from '../../../../../../theme/components'; +import {BaMultiCheckbox} from '../../../../../../theme/components'; @Component({ selector: 'checkbox-inputs', template: require('./checkboxInputs.html'), - directives: [BaCheckbox] + directives: [BaMultiCheckbox] }) export class CheckboxInputs { + public checkboxModel = [{ + name: 'Check 1', + checked: false, + class: 'col-md-4' + }, { + name: 'Check 2', + checked: true, + class: 'col-md-4' + }, { + name: 'Check 3', + checked: false, + class: 'col-md-4' + }]; + public checkboxPropertiesMapping = { + model: 'checked', + value: 'name', + label: 'name', + baCheckboxClass: 'class' + }; + constructor() { } - + } diff --git a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html index 5e5f3c69..e83f1c71 100644 --- a/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html +++ b/src/app/pages/forms/components/inputs/components/checkboxInputs/checkboxInputs.html @@ -1,8 +1,6 @@
- - - +
@@ -27,10 +25,7 @@
- +
-
-
- -
-
-
-
- -
-
-
-
- -
-
- +
diff --git a/src/app/theme/components/baCheckbox/baCheckbox.component.ts b/src/app/theme/components/baCheckbox/baCheckbox.component.ts index fcdd6b66..a058fe3c 100644 --- a/src/app/theme/components/baCheckbox/baCheckbox.component.ts +++ b/src/app/theme/components/baCheckbox/baCheckbox.component.ts @@ -1,32 +1,36 @@ -import {Component, Provider, forwardRef, Input} from "@angular/core"; -import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/common"; - -const BA_CHECKBOX_CONTROL_VALUE_ACCESSOR = new Provider( - NG_VALUE_ACCESSOR, { - useExisting: forwardRef(() => BaCheckbox), - multi: true - }); +import {Component, Input, Self} from '@angular/core'; +import {ControlValueAccessor, NgModel} from '@angular/forms'; @Component({ - selector: 'ba-checkbox', - template: require('./baCheckbox.html'), - providers: [BA_CHECKBOX_CONTROL_VALUE_ACCESSOR] + selector: 'ba-checkbox[ngModel]', + styles: [require('./baCheckbox.scss')], + template: require('./baCheckbox.html') }) export class BaCheckbox implements ControlValueAccessor { @Input() disabled:boolean; @Input() label:string; @Input() value:string; - @Input() name:string; @Input() baCheckboxClass:string; + public model: NgModel; public state: boolean; - onChange(value: any): void {} - onTouch(value: any): void {} - writeValue(value: any): void { - this.state = value; + public constructor(@Self() state:NgModel) { + this.model = state; + state.valueAccessor = this; } - registerOnChange(fn: any): void { this.onChange = fn; } - registerOnTouched(fn: any): void { this.onTouch = fn; } + public onChange(value: any): void {} + public onTouch(value: any): void {} + public writeValue(state: any): void { + this.state = state; + } + + public registerOnChange(fn: any): void { + this.onChange = function(state: boolean) { + this.writeValue(state); + this.model.viewToModelUpdate(state); + } + } + public registerOnTouched(fn: any): void { this.onTouch = fn; } } diff --git a/src/app/theme/components/baCheckbox/baCheckbox.html b/src/app/theme/components/baCheckbox/baCheckbox.html index 7ed7e5a3..b8409ea6 100644 --- a/src/app/theme/components/baCheckbox/baCheckbox.html +++ b/src/app/theme/components/baCheckbox/baCheckbox.html @@ -1,6 +1,6 @@