1- import { Directive , HostBinding , Input } from '@angular/core' ;
1+ import { computed , Directive , input } from '@angular/core' ;
22import { Border } from './border.type' ;
33
44@Directive ( {
5- selector : '[cBorder]'
5+ selector : '[cBorder]' ,
6+ exportAs : 'cBorder' ,
7+ host : { '[class]' : 'hostClasses()' }
68} )
79export class BorderDirective {
810 /**
911 * Add or remove an element’s borders
10- * @type Border
12+ * @return Border
1113 */
12- @ Input ( ' cBorder' ) border : Border = true ;
14+ readonly cBorder = input < Border > ( true ) ;
1315
14- @ HostBinding ( 'class' )
15- get hostClasses ( ) : any {
16- if ( typeof this . border === 'boolean' ) {
16+ readonly hostClasses = computed ( ( ) => {
17+ const border = this . cBorder ( ) ;
18+ if ( typeof border === 'boolean' ) {
1719 return { border : true } ;
1820 }
19- if ( typeof this . border === 'number' || typeof this . border === 'string' ) {
21+ if ( typeof border === 'number' || typeof border === 'string' ) {
2022 return {
2123 border : true ,
22- [ `border-${ this . border } ` ] : true
24+ [ `border-${ border } ` ] : true
2325 } ;
2426 }
25- if ( typeof this . border === 'object' ) {
27+ if ( typeof border === 'object' ) {
2628 const borderObj = {
2729 top : undefined ,
2830 end : undefined ,
2931 bottom : undefined ,
3032 start : undefined ,
3133 color : undefined ,
32- ...this . border
34+ ...border
3335 } ;
3436 // @ts -ignore
3537 const keys = Object . keys ( borderObj ) . filter ( ( key ) => borderObj [ key ] !== undefined ) ;
@@ -56,5 +58,6 @@ export class BorderDirective {
5658 } ) ;
5759 return Object . entries ( classes ) . length === 0 ? { border : false } : classes ;
5860 }
59- }
61+ return { border : false } ;
62+ } ) ;
6063}
0 commit comments