UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

157 lines 17.9 kB
import { Directive, HostBinding, Input } from '@angular/core'; import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion'; import { BreakpointInfix } from '../coreui.types'; import * as i0 from "@angular/core"; export class ColDirective { constructor() { this._xs = false; this._sm = false; this._md = false; this._lg = false; this._xl = false; this._xxl = false; } /** * The number of columns/offset/order on extra small devices (<576px). * @type { 'auto' | number | boolean } */ set cCol(value) { this.xs = this.xs || this.coerceInput(value); } set xs(value) { this._xs = this.coerceInput(value); } get xs() { return this._xs; } /** * The number of columns/offset/order on small devices (<768px). * @type { 'auto' | number | boolean } */ set sm(value) { this._sm = this.coerceInput(value); } get sm() { return this._sm; } /** * The number of columns/offset/order on medium devices (<992px). * @type { 'auto' | number | boolean } */ set md(value) { this._md = this.coerceInput(value); } get md() { return this._md; } /** * The number of columns/offset/order on large devices (<1200px). * @type { 'auto' | number | boolean } */ set lg(value) { this._lg = this.coerceInput(value); } get lg() { return this._lg; } /** * The number of columns/offset/order on X-Large devices (<1400px). * @type { 'auto' | number | boolean } */ set xl(value) { this._xl = this.coerceInput(value); } get xl() { return this._xl; } /** * The number of columns/offset/order on XX-Large devices (≥1400px). * @type { 'auto' | number | boolean } */ set xxl(value) { this._xxl = this.coerceInput(value); } get xxl() { return this._xxl; } get hostClasses() { const classes = { col: true }; Object.keys(BreakpointInfix).forEach((breakpoint) => { // @ts-ignore const value = this[breakpoint]; const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`; classes[`col${infix}`] = value === true; classes[`col${infix}-${value}`] = (typeof value === 'number') || (typeof value === 'string'); }); if (typeof this.offset === 'object') { const offset = { ...this.offset }; Object.entries(offset).forEach((entry) => { const [breakpoint, value] = [...entry]; const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`; classes[`offset${infix}-${value}`] = value >= 0 && value <= 11; }); } else { classes[`offset-${this.offset}`] = (typeof this.offset === 'number') && this.offset > 0 && this.offset <= 11; } if (typeof this.order === 'object') { const order = { ...this.order }; Object.entries(order).forEach((entry) => { const [breakpoint, value] = [...entry]; const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`; classes[`order${infix}-${value}`] = value; }); } else { classes[`order-${this.order}`] = !!this.order; } // if there is no 'col' class, add one classes.col = (!Object.entries(classes).filter(i => i[0].startsWith('col-') && i[1]).length) || this.xs === true; return classes; } coerceInput(value) { if (value === 'auto') { return value; } if (value === '' || value === undefined || value === null) { return coerceBooleanProperty(value); } if (typeof value === 'boolean') { return value; } return coerceNumberProperty(value); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ColDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: ColDirective, isStandalone: true, selector: "[cCol]", inputs: { cCol: "cCol", xs: "xs", sm: "sm", md: "md", lg: "lg", xl: "xl", xxl: "xxl", offset: "offset", order: "order" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ColDirective, decorators: [{ type: Directive, args: [{ selector: '[cCol]', standalone: true }] }], propDecorators: { cCol: [{ type: Input }], xs: [{ type: Input }], sm: [{ type: Input }], md: [{ type: Input }], lg: [{ type: Input }], xl: [{ type: Input }], xxl: [{ type: Input }], offset: [{ type: Input }], order: [{ type: Input }], hostClasses: [{ type: HostBinding, args: ['class'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZC9jb2wuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFHL0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU1sRCxNQUFNLE9BQU8sWUFBWTtJQUp6QjtRQTZCVSxRQUFHLEdBQWlDLEtBQUssQ0FBQztRQWExQyxRQUFHLEdBQWlDLEtBQUssQ0FBQztRQWExQyxRQUFHLEdBQWlDLEtBQUssQ0FBQztRQWExQyxRQUFHLEdBQWlDLEtBQUssQ0FBQztRQWExQyxRQUFHLEdBQWlDLEtBQUssQ0FBQztRQWExQyxTQUFJLEdBQWlDLEtBQUssQ0FBQztLQTJEcEQ7SUEzSUM7OztPQUdHO0lBQ0gsSUFDSSxJQUFJLENBQUMsS0FBbUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQ0ksRUFBRSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFDSSxFQUFFLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJ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O1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxPQUFPLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0FwSlUsWUFBWTttR0FBWixZQUFZOzs0RkFBWixZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBZ0JLLElBQUk7c0JBRFAsS0FBSztnQkFLRixFQUFFO3NCQURMLEtBQUs7Z0JBY0YsRUFBRTtzQkFETCxLQUFLO2dCQWNGLEVBQUU7c0JBREwsS0FBSztnQkFjRixFQUFFO3NCQURMLEtBQUs7Z0JBY0YsRUFBRTtzQkFETCxLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFTRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBDb2xPcmRlciwgSUNvbCB9IGZyb20gJy4vY29sLnR5cGUnO1xuaW1wb3J0IHsgQnJlYWtwb2ludEluZml4IH0gZnJvbSAnLi4vY29yZXVpLnR5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NDb2xdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBJQ29sIHtcblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY0NvbDogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KTtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3hzOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc206IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCk7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9tZDogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KTtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xnOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpO1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfeGw6IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCk7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV94eGw6IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCk7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucy9vZmZzZXQvb3JkZXIgb24gZXh0cmEgc21hbGwgZGV2aWNlcyAoPDU3NnB4KS5cbiAgICogQHR5cGUgeyAnYXV0bycgfCBudW1iZXIgfCAgYm9vbGVhbiB9XG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY0NvbCh2YWx1ZTogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KSkge1xuICAgIHRoaXMueHMgPSB0aGlzLnhzIHx8IHRoaXMuY29lcmNlSW5wdXQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB4cyh2YWx1ZSkge1xuICAgIHRoaXMuX3hzID0gdGhpcy5jb2VyY2VJbnB1dCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHhzKCk6IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLl94cztcbiAgfVxuICBwcml2YXRlIF94czogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMvb2Zmc2V0L29yZGVyIG9uIHNtYWxsIGRldmljZXMgKDw3NjhweCkuXG4gICAqIEB0eXBlIHsgJ2F1dG8nIHwgbnVtYmVyIHwgIGJvb2xlYW4gfVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNtKHZhbHVlKSB7XG4gICAgdGhpcy5fc20gPSB0aGlzLmNvZXJjZUlucHV0KHZhbHVlKTtcbiAgfVxuICBnZXQgc20oKTogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuX3NtO1xuICB9XG4gIHByaXZhdGUgX3NtOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucy9vZmZzZXQvb3JkZXIgb24gbWVkaXVtIGRldmljZXMgKDw5OTJweCkuXG4gICAqIEB0eXBlIHsgJ2F1dG8nIHwgbnVtYmVyIHwgIGJvb2xlYW4gfVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG1kKHZhbHVlKSB7XG4gICAgdGhpcy5fbWQgPSB0aGlzLmNvZXJjZUlucHV0KHZhbHVlKTtcbiAgfVxuICBnZXQgbWQoKTogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuX21kO1xuICB9XG4gIHByaXZhdGUgX21kOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucy9vZmZzZXQvb3JkZXIgb24gbGFyZ2UgZGV2aWNlcyAoPDEyMDBweCkuXG4gICAqIEB0eXBlIHsgJ2F1dG8nIHwgbnVtYmVyIHwgIGJvb2xlYW4gfVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGxnKHZhbHVlKSB7XG4gICAgdGhpcy5fbGcgPSB0aGlzLmNvZXJjZUlucHV0KHZhbHVlKTtcbiAgfVxuICBnZXQgbGcoKTogKEJvb2xlYW5JbnB1dCB8IE51bWJlcklucHV0KSB7XG4gICAgcmV0dXJuIHRoaXMuX2xnO1xuICB9XG4gIHByaXZhdGUgX2xnOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucy9vZmZzZXQvb3JkZXIgb24gWC1MYXJnZSBkZXZpY2VzICg8MTQwMHB4KS5cbiAgICogQHR5cGUgeyAnYXV0bycgfCBudW1iZXIgfCAgYm9vbGVhbiB9XG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgeGwodmFsdWUpIHtcbiAgICB0aGlzLl94bCA9IHRoaXMuY29lcmNlSW5wdXQodmFsdWUpO1xuICB9XG4gIGdldCB4bCgpOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5feGw7XG4gIH1cbiAgcHJpdmF0ZSBfeGw6IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCkgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zL29mZnNldC9vcmRlciBvbiBYWC1MYXJnZSBkZXZpY2VzICjiiaUxNDAwcHgpLlxuICAgKiBAdHlwZSB7ICdhdXRvJyB8IG51bWJlciB8ICBib29sZWFuIH1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB4eGwodmFsdWUpIHtcbiAgICB0aGlzLl94eGwgPSB0aGlzLmNvZXJjZUlucHV0KHZhbHVlKTtcbiAgfVxuICBnZXQgeHhsKCk6IChCb29sZWFuSW5wdXQgfCBOdW1iZXJJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLl94eGw7XG4gIH1cbiAgcHJpdmF0ZSBfeHhsOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpID0gZmFsc2U7XG5cbiAgQElucHV0KCkgb2Zmc2V0PzogKG51bWJlciB8IHsgJ3hzJz86IG51bWJlciwgc20/OiBudW1iZXIsIG1kPzogbnVtYmVyLCBsZz86IG51bWJlciwgeGw/OiBudW1iZXIsIHh4bD86IG51bWJlciB9KTtcbiAgQElucHV0KCkgb3JkZXI/OiAoQ29sT3JkZXIgfCB7IHhzPzogQ29sT3JkZXIsIHNtPzogQ29sT3JkZXIsIG1kPzogQ29sT3JkZXIsIGxnPzogQ29sT3JkZXIsIHhsPzogQ29sT3JkZXIsIHh4bD86IENvbE9yZGVyIH0pO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcblxuICAgIGNvbnN0IGNsYXNzZXM6IGFueSA9IHtcbiAgICAgIGNvbDogdHJ1ZVxuICAgIH07XG5cbiAgICBPYmplY3Qua2V5cyhCcmVha3BvaW50SW5maXgpLmZvckVhY2goKGJyZWFrcG9pbnQpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuID0gdGhpc1ticmVha3BvaW50XTtcbiAgICAgIGNvbnN0IGluZml4ID0gYnJlYWtwb2ludCA9PT0gJ3hzJyA/ICcnIDogYC0ke2JyZWFrcG9pbnR9YDtcbiAgICAgIGNsYXNzZXNbYGNvbCR7aW5maXh9YF0gPSB2YWx1ZSA9PT0gdHJ1ZTtcbiAgICAgIGNsYXNzZXNbYGNvbCR7aW5maXh9LSR7dmFsdWV9YF0gPSAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpO1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9mZnNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHsgLi4udGhpcy5vZmZzZXQgfTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKG9mZnNldCkuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW2JyZWFrcG9pbnQsIHZhbHVlXSA9IFsuLi5lbnRyeV07XG4gICAgICAgIGNvbnN0IGluZml4ID0gYnJlYWtwb2ludCA9PT0gJ3hzJyA/ICcnIDogYC0ke2JyZWFrcG9pbnR9YDtcbiAgICAgICAgY2xhc3Nlc1tgb2Zmc2V0JHtpbmZpeH0tJHt2YWx1ZX1gXSA9IHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlc1tgb2Zmc2V0LSR7dGhpcy5vZmZzZXR9YF0gPSAodHlwZW9mIHRoaXMub2Zmc2V0ID09PSAnbnVtYmVyJykgJiYgdGhpcy5vZmZzZXQgPiAwICYmIHRoaXMub2Zmc2V0IDw9IDExO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IG9yZGVyID0geyAuLi50aGlzLm9yZGVyIH07XG4gICAgICBPYmplY3QuZW50cmllcyhvcmRlcikuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW2JyZWFrcG9pbnQsIHZhbHVlXSA9IFsuLi5lbnRyeV07XG4gICAgICAgIGNvbnN0IGluZml4ID0gYnJlYWtwb2ludCA9PT0gJ3hzJyA/ICcnIDogYC0ke2JyZWFrcG9pbnR9YDtcbiAgICAgICAgY2xhc3Nlc1tgb3JkZXIke2luZml4fS0ke3ZhbHVlfWBdID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlc1tgb3JkZXItJHt0aGlzLm9yZGVyfWBdID0gISF0aGlzLm9yZGVyO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vICdjb2wnIGNsYXNzLCBhZGQgb25lXG4gICAgY2xhc3Nlcy5jb2wgPSAoIU9iamVjdC5lbnRyaWVzKGNsYXNzZXMpLmZpbHRlcihpID0+IGlbMF0uc3RhcnRzV2l0aCgnY29sLScpICYmIGlbMV0pLmxlbmd0aCkgfHwgdGhpcy54cyA9PT0gdHJ1ZTtcbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGNvZXJjZUlucHV0KHZhbHVlOiAoQm9vbGVhbklucHV0IHwgTnVtYmVySW5wdXQpKSB7XG4gICAgaWYgKHZhbHVlID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==