UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

102 lines 10.2 kB
import { afterNextRender, Directive, ElementRef, HostBinding, inject, Input } from '@angular/core'; import { DsfrTableComponent } from '../table.component'; import { setFixedColumnPosition } from '../table.utils'; import * as i0 from "@angular/core"; /** * Directive ajout de style pour une colonne (taille, alignements) */ export class DsfrColumnDirective { constructor() { this.allowWrap = false; this.table = inject(DsfrTableComponent); this.element = inject(ElementRef); afterNextRender(() => { if (this.col?.fixed) { // double animation request pour bug webkit refresh requestAnimationFrame(() => { requestAnimationFrame(() => { setFixedColumnPosition(this.element.nativeElement, this.col.fixedPosition); }); }); } }); } get isFixed() { return !!this.col.fixed; } get isMultiline() { return this.col?.allowWrap; } get sizeClass() { switch (this.col.minWidth) { case 'XS': return 'fr-col--xs'; case 'SM': return 'fr-col--sm'; case 'MD': return 'fr-col--md'; case 'LG': return 'fr-col--lg'; default: return ''; } } // Ajout de l'attribut scope si ce n'est pas un tableau complexe (pas de summary) get scope() { return this.table.headerSummaryTemplate ? null : 'col'; } get isTopCell() { return this.col.verticalAlign === 'top'; } get isBottomCell() { return this.col.verticalAlign === 'bottom'; } get isCenterCell() { return this.col.textAlign === 'center'; } get isRightCell() { return this.col.textAlign === 'right'; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DsfrColumnDirective, isStandalone: true, selector: "[dsfrCol]", inputs: { col: ["dsfrCol", "col"], allowWrap: "allowWrap" }, host: { properties: { "class.fr-cell--multiline": "this.isMultiline", "class.fr-cell--fixed": "this.isFixed", "class": "this.sizeClass", "attr.scope": "this.scope", "class.fr-cell--top": "this.isTopCell", "class.fr-cell--bottom": "this.isBottomCell", "class.fr-cell--center": "this.isCenterCell", "class.fr-cell--right": "this.isRightCell" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrColumnDirective, decorators: [{ type: Directive, args: [{ selector: '[dsfrCol]', standalone: true, }] }], ctorParameters: () => [], propDecorators: { col: [{ type: Input, args: ['dsfrCol'] }], allowWrap: [{ type: HostBinding, args: ['class.fr-cell--multiline'] }, { type: Input }], isFixed: [{ type: HostBinding, args: ['class.fr-cell--fixed'] }], isMultiline: [{ type: HostBinding, args: ['class.fr-cell--multiline'] }], sizeClass: [{ type: HostBinding, args: ['class'] }], scope: [{ type: HostBinding, args: ['attr.scope'] }], isTopCell: [{ type: HostBinding, args: ['class.fr-cell--top'] }], isBottomCell: [{ type: HostBinding, args: ['class.fr-cell--bottom'] }], isCenterCell: [{ type: HostBinding, args: ['class.fr-cell--center'] }], isRightCell: [{ type: HostBinding, args: ['class.fr-cell--right'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2RpcmVjdGl2ZS9jb2x1bW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFeEQ7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBUzlCO1FBTmtELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFbkUsVUFBSyxHQUF1QixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2RCxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBR3JDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNwQixtREFBbUQ7Z0JBQ25ELHFCQUFxQixDQUFDLEdBQUcsRUFBRTtvQkFDekIscUJBQXFCLENBQUMsR0FBRyxFQUFFO3dCQUN6QixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQTRCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUYsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssSUFBSTtnQkFDUCxPQUFPLFlBQVksQ0FBQztZQUN0QixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxZQUFZLENBQUM7WUFDdEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUN4QyxDQUFDOytHQXhFVSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3dEQUVtQixHQUFHO3NCQUFwQixLQUFLO3VCQUFDLFNBQVM7Z0JBRWtDLFNBQVM7c0JBQTFELFdBQVc7dUJBQUMsMEJBQTBCOztzQkFBRyxLQUFLO2dCQW9CM0MsT0FBTztzQkFEVixXQUFXO3VCQUFDLHNCQUFzQjtnQkFNL0IsV0FBVztzQkFEZCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFNbkMsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU87Z0JBa0JoQixLQUFLO3NCQURSLFdBQVc7dUJBQUMsWUFBWTtnQkFNckIsU0FBUztzQkFEWixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNN0IsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHVCQUF1QjtnQkFNaEMsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHVCQUF1QjtnQkFNaEMsV0FBVztzQkFEZCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHNmclRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERzZnJDb2x1bW4gfSBmcm9tICcuLi90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBzZXRGaXhlZENvbHVtblBvc2l0aW9uIH0gZnJvbSAnLi4vdGFibGUudXRpbHMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSBham91dCBkZSBzdHlsZSBwb3VyIHVuZSBjb2xvbm5lICh0YWlsbGUsIGFsaWduZW1lbnRzKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZHNmckNvbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEc2ZyQ29sdW1uRGlyZWN0aXZlIHtcbiAgQElucHV0KCdkc2ZyQ29sJykgY29sOiBEc2ZyQ29sdW1uO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnItY2VsbC0tbXVsdGlsaW5lJykgQElucHV0KCkgYWxsb3dXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHRhYmxlOiBEc2ZyVGFibGVDb21wb25lbnQgPSBpbmplY3QoRHNmclRhYmxlQ29tcG9uZW50KTtcblxuICBwcm90ZWN0ZWQgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29sPy5maXhlZCkge1xuICAgICAgICAvLyBkb3VibGUgYW5pbWF0aW9uIHJlcXVlc3QgcG91ciBidWcgd2Via2l0IHJlZnJlc2hcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgc2V0Rml4ZWRDb2x1bW5Qb3NpdGlvbih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcy5jb2wuZml4ZWRQb3NpdGlvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mci1jZWxsLS1maXhlZCcpXG4gIGdldCBpc0ZpeGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29sLmZpeGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mci1jZWxsLS1tdWx0aWxpbmUnKVxuICBnZXQgaXNNdWx0aWxpbmUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29sPy5hbGxvd1dyYXA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IHNpemVDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5jb2wubWluV2lkdGgpIHtcbiAgICAgIGNhc2UgJ1hTJzpcbiAgICAgICAgcmV0dXJuICdmci1jb2wtLXhzJztcbiAgICAgIGNhc2UgJ1NNJzpcbiAgICAgICAgcmV0dXJuICdmci1jb2wtLXNtJztcbiAgICAgIGNhc2UgJ01EJzpcbiAgICAgICAgcmV0dXJuICdmci1jb2wtLW1kJztcbiAgICAgIGNhc2UgJ0xHJzpcbiAgICAgICAgcmV0dXJuICdmci1jb2wtLWxnJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvLyBBam91dCBkZSBsJ2F0dHJpYnV0IHNjb3BlIHNpIGNlIG4nZXN0IHBhcyB1biB0YWJsZWF1IGNvbXBsZXhlIChwYXMgZGUgc3VtbWFyeSlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNjb3BlJylcbiAgZ2V0IHNjb3BlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLmhlYWRlclN1bW1hcnlUZW1wbGF0ZSA/IG51bGwgOiAnY29sJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnItY2VsbC0tdG9wJylcbiAgZ2V0IGlzVG9wQ2VsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2wudmVydGljYWxBbGlnbiA9PT0gJ3RvcCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZyLWNlbGwtLWJvdHRvbScpXG4gIGdldCBpc0JvdHRvbUNlbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sLnZlcnRpY2FsQWxpZ24gPT09ICdib3R0b20nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mci1jZWxsLS1jZW50ZXInKVxuICBnZXQgaXNDZW50ZXJDZWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbC50ZXh0QWxpZ24gPT09ICdjZW50ZXInO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mci1jZWxsLS1yaWdodCcpXG4gIGdldCBpc1JpZ2h0Q2VsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2wudGV4dEFsaWduID09PSAncmlnaHQnO1xuICB9XG59XG4iXX0=