coreui-angular-ex
Version:
CoreUI Components Library for Angular
57 lines (52 loc) • 1.55 kB
text/typescript
import { Directive, HostBinding, Input } from '@angular/core';
import { Rounded, RoundedSize } from './rounded.type';
({
selector: '[cRounded]',
standalone: true
})
export class RoundedDirective {
/**
* Set border radius variant and radius size
* @type Rounded
*/
('cRounded') rounded: Rounded = true;
('class')
get hostClasses(): any {
if ( typeof this.rounded === 'boolean' ) {
return { rounded: true };
}
if ( typeof this.rounded === 'number' || typeof this.rounded === 'string' ) {
return {
[`rounded-${this.rounded}`]: true
};
}
if ( typeof this.rounded === 'object' ) {
const roundedObj = {
top: undefined,
end: undefined,
bottom: undefined,
start: undefined,
circle: undefined,
pill: undefined,
size: undefined,
...this.rounded,
};
// @ts-ignore
const keys = Object.keys(roundedObj).filter(key => roundedObj[key] !== undefined );
const classes = {};
keys.forEach(key => {
// @ts-ignore
const val = roundedObj[key];
if (typeof val === 'boolean') {
// @ts-ignore
classes[`rounded-${key}`] = val;
} else {
// @ts-ignore
classes[`rounded-${val}`] = true;
}
});
// console.log('rounded keys', keys, classes);
return Object.entries(classes).length === 0 ? {rounded: false} : classes;
}
}
}