coreui-angular-ex
Version:
CoreUI Components Library for Angular
64 lines (56 loc) • 1.78 kB
text/typescript
import { Directive, HostBinding, Input } from '@angular/core';
import { BreakpointInfix } from '../coreui.types';
import { IRow, NumberOfColumns } from './row.type';
({
selector: '[cRow]',
standalone: true
})
export class RowDirective implements IRow {
/**
* The number of columns/offset/order on extra small devices (<576px).
* @type {{ cols: 'auto' | number }
*/
() xs?: NumberOfColumns;
/**
* The number of columns/offset/order on small devices (<768px).
* @type {{ cols: 'auto' | number }
*/
() sm?: NumberOfColumns;
/**
* The number of columns/offset/order on medium devices (<992px).
* @type {{ cols: 'auto' | number }
*/
() md?: NumberOfColumns;
/**
* The number of columns/offset/order on large devices (<1200px).
* @type {{ cols: 'auto' | number }
*/
() lg?: NumberOfColumns;
/**
* The number of columns/offset/order on X-Large devices (<1400px).
* @type {{ cols: 'auto' | number }
*/
() xl?: NumberOfColumns;
/**
* The number of columns/offset/order on XX-Large devices (≥1400px).
* @type {{ cols: 'auto' | number }
*/
() xxl?: NumberOfColumns;
('class')
get hostClasses(): any {
const cols = this.xs;
const classes: any = {
row: true,
[`row-cols-${cols}`]: !!cols,
};
Object.keys(BreakpointInfix).forEach(breakpoint => {
// @ts-ignore
const value: any = this[breakpoint];
if ((typeof value === 'number') || (typeof value === 'string')) {
const infix: string = breakpoint === 'xs' ? '' : breakpoint;
classes[`row-cols-${infix}-${value}`] = !!value;
}
});
return classes;
}
}