@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
JavaScript
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=