UNPKG

carbon-components-angular

Version:
176 lines 16.6 kB
import { ContentChildren, Directive, HostBinding, Input, Optional, SkipSelf } from "@angular/core"; import { Subscription } from "rxjs"; import { GridService } from "./grid.service"; import * as i0 from "@angular/core"; import * as i1 from "./grid.service"; /** * Get started with importing the module: * * ```typescript * import { GridModule } from 'carbon-components-angular'; * ``` * * [See demo](../../?path=/story/components-grid--basic) */ export class GridDirective { constructor(gridService) { this.gridService = gridService; /** * Set to `true` to condense the grid */ this.condensed = false; /** * Set to `true` to use narrow grid */ this.narrow = false; /** * Set to `true` to use the full width */ this.fullWidth = false; this.cssGridEnabled = false; this.isSubgrid = false; this.subscription = new Subscription(); } /** * Set to `true` to use css grid */ set useCssGrid(enable) { this.cssGridEnabled = enable; this.gridService.updateGridType(enable); } // Flex grid get flexGrid() { return !this.cssGridEnabled; } get flexCondensed() { return !this.cssGridEnabled && this.condensed; } get flexNarrow() { return !this.cssGridEnabled && this.narrow; } get flexFullWidth() { return !this.cssGridEnabled && this.fullWidth; } // CSS Grid get ccsGrid() { return this.cssGridEnabled && !this.isSubgrid; } get ccsCondensed() { return this.cssGridEnabled && !this.isSubgrid && this.condensed; } get ccsNarrow() { return this.cssGridEnabled && !this.isSubgrid && this.narrow; } get ccsFullWidth() { return this.cssGridEnabled && !this.isSubgrid && this.fullWidth; } // CSS Sub Grid get subGrid() { return this.cssGridEnabled && this.isSubgrid; } get subCondensed() { return this.cssGridEnabled && this.isSubgrid && this.condensed; } get subNarrow() { return this.cssGridEnabled && this.isSubgrid && this.narrow; } get subFullWidth() { return this.cssGridEnabled && this.isSubgrid && this.fullWidth; } ngOnInit() { this.subscription = this.gridService.gridObservable.subscribe((isCssGrid) => { this.cssGridEnabled = isCssGrid; }); } // Make all children grids a sub grid set cssGridChildren(list) { if (this.cssGridEnabled) { list.forEach((grid) => { // Prevents initial (parent) grid element from being turned into a subgrid if (grid === this) { return; } grid.isSubgrid = true; }); } } /** * Unsubscribe from Grid Service subscription */ ngOnDestroy() { this.subscription.unsubscribe(); } } GridDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GridDirective, deps: [{ token: i1.GridService }], target: i0.ɵɵFactoryTarget.Directive }); GridDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: GridDirective, selector: "[cdsGrid], [ibmGrid]", inputs: { condensed: "condensed", narrow: "narrow", fullWidth: "fullWidth", useCssGrid: "useCssGrid" }, host: { properties: { "class.cds--grid": "this.flexGrid", "class.cds--grid--condensed": "this.flexCondensed", "class.cds--grid--narrow": "this.flexNarrow", "class.cds--grid--full-width": "this.flexFullWidth", "class.cds--css-grid": "this.ccsGrid", "class.cds--css-grid--condensed": "this.ccsCondensed", "class.cds--css-grid--narrow": "this.ccsNarrow", "class.cds--css-grid--full-width": "this.ccsFullWidth", "class.cds--subgrid": "this.subGrid", "class.cds--subgrid--condensed": "this.subCondensed", "class.cds--subgrid--narrow": "this.subNarrow", "class.cds--subgrid--wide": "this.subFullWidth" } }, providers: [ { provide: GridService, deps: [[new Optional(), new SkipSelf(), GridService]], useFactory: (parentService) => { return parentService || new GridService(); } } ], queries: [{ propertyName: "cssGridChildren", predicate: GridDirective, descendants: true }], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GridDirective, decorators: [{ type: Directive, args: [{ selector: "[cdsGrid], [ibmGrid]", providers: [ { provide: GridService, deps: [[new Optional(), new SkipSelf(), GridService]], useFactory: (parentService) => { return parentService || new GridService(); } } ] }] }], ctorParameters: function () { return [{ type: i1.GridService }]; }, propDecorators: { condensed: [{ type: Input }], narrow: [{ type: Input }], fullWidth: [{ type: Input }], useCssGrid: [{ type: Input }], flexGrid: [{ type: HostBinding, args: ["class.cds--grid"] }], flexCondensed: [{ type: HostBinding, args: ["class.cds--grid--condensed"] }], flexNarrow: [{ type: HostBinding, args: ["class.cds--grid--narrow"] }], flexFullWidth: [{ type: HostBinding, args: ["class.cds--grid--full-width"] }], ccsGrid: [{ type: HostBinding, args: ["class.cds--css-grid"] }], ccsCondensed: [{ type: HostBinding, args: ["class.cds--css-grid--condensed"] }], ccsNarrow: [{ type: HostBinding, args: ["class.cds--css-grid--narrow"] }], ccsFullWidth: [{ type: HostBinding, args: ["class.cds--css-grid--full-width"] }], subGrid: [{ type: HostBinding, args: ["class.cds--subgrid"] }], subCondensed: [{ type: HostBinding, args: ["class.cds--subgrid--condensed"] }], subNarrow: [{ type: HostBinding, args: ["class.cds--subgrid--narrow"] }], subFullWidth: [{ type: HostBinding, args: ["class.cds--subgrid--wide"] }], cssGridChildren: [{ type: ContentChildren, args: [GridDirective, { descendants: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ3JpZC9ncmlkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdMLFFBQVEsRUFFUixRQUFRLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3Qzs7Ozs7Ozs7R0FRRztBQWFILE1BQU0sT0FBTyxhQUFhO0lBbUV6QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWxFNUM7O1dBRUc7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUN4Qjs7V0FFRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFTbkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUE0Q0ssQ0FBQztJQXREaEQ7O09BRUc7SUFDSCxJQUFhLFVBQVUsQ0FBQyxNQUFlO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFNRCxZQUFZO0lBQ1osSUFBb0MsUUFBUTtRQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBK0MsYUFBYTtRQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFDRCxJ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QyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQzs0QkFDckQsVUFBVSxFQUFFLENBQUMsYUFBMEIsRUFBRSxFQUFFO2dDQUMxQyxPQUFPLGFBQWEsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDOzRCQUMzQyxDQUFDO3lCQUNEO3FCQUNEO2lCQUNEO2tHQUtTLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFVOEIsUUFBUTtzQkFBM0MsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBR2lCLGFBQWE7c0JBQTNELFdBQVc7dUJBQUMsNEJBQTRCO2dCQUdHLFVBQVU7c0JBQXJELFdBQVc7dUJBQUMseUJBQXlCO2dCQUdVLGFBQWE7c0JBQTVELFdBQVc7dUJBQUMsNkJBQTZCO2dCQUtGLE9BQU87c0JBQTlDLFdBQVc7dUJBQUMscUJBQXFCO2dCQUdpQixZQUFZO3NCQUE5RCxXQUFXO3VCQUFDLGdDQUFnQztnQkFHRyxTQUFTO3NCQUF4RCxXQUFXO3VCQUFDLDZCQUE2QjtnQkFHVSxZQUFZO3NCQUEvRCxXQUFXO3VCQUFDLGlDQUFpQztnQkFLUCxPQUFPO3NCQUE3QyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFHaUIsWUFBWTtzQkFBN0QsV0FBVzt1QkFBQywrQkFBK0I7Z0JBR0csU0FBUztzQkFBdkQsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBR0ksWUFBWTtzQkFBeEQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBYW9CLGVBQWU7c0JBQXpFLGVBQWU7dUJBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbnRlbnRDaGlsZHJlbixcblx0RGlyZWN0aXZlLFxuXHRIb3N0QmluZGluZyxcblx0SW5wdXQsXG5cdE9uRGVzdHJveSxcblx0T25Jbml0LFxuXHRPcHRpb25hbCxcblx0UXVlcnlMaXN0LFxuXHRTa2lwU2VsZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSBcIi4vZ3JpZC5zZXJ2aWNlXCI7XG5cbi8qKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBHcmlkTW9kdWxlIH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWdyaWQtLWJhc2ljKVxuICovXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6IFwiW2Nkc0dyaWRdLCBbaWJtR3JpZF1cIixcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogR3JpZFNlcnZpY2UsXG5cdFx0XHRkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgR3JpZFNlcnZpY2VdXSxcblx0XHRcdHVzZUZhY3Rvcnk6IChwYXJlbnRTZXJ2aWNlOiBHcmlkU2VydmljZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcGFyZW50U2VydmljZSB8fCBuZXcgR3JpZFNlcnZpY2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgR3JpZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gY29uZGVuc2UgdGhlIGdyaWRcblx0ICovXG5cdEBJbnB1dCgpIGNvbmRlbnNlZCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byB1c2UgbmFycm93IGdyaWRcblx0ICovXG5cdEBJbnB1dCgpIG5hcnJvdyA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byB1c2UgdGhlIGZ1bGwgd2lkdGhcblx0ICovXG5cdEBJbnB1dCgpIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byB1c2UgY3NzIGdyaWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCB1c2VDc3NHcmlkKGVuYWJsZTogYm9vbGVhbikge1xuXHRcdHRoaXMuY3NzR3JpZEVuYWJsZWQgPSBlbmFibGU7XG5cdFx0dGhpcy5ncmlkU2VydmljZS51cGRhdGVHcmlkVHlwZShlbmFibGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBjc3NHcmlkRW5hYmxlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGlzU3ViZ3JpZCA9IGZhbHNlO1xuXHRwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuXHQvLyBGbGV4IGdyaWRcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1ncmlkXCIpIGdldCBmbGV4R3JpZCgpIHtcblx0XHRyZXR1cm4gIXRoaXMuY3NzR3JpZEVuYWJsZWQ7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1ncmlkLS1jb25kZW5zZWRcIikgZ2V0IGZsZXhDb25kZW5zZWQoKSB7XG5cdFx0cmV0dXJuICF0aGlzLmNzc0dyaWRFbmFibGVkICYmIHRoaXMuY29uZGVuc2VkO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZ3JpZC0tbmFycm93XCIpIGdldCBmbGV4TmFycm93KCkge1xuXHRcdHJldHVybiAhdGhpcy5jc3NHcmlkRW5hYmxlZCAmJiB0aGlzLm5hcnJvdztcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWdyaWQtLWZ1bGwtd2lkdGhcIikgZ2V0IGZsZXhGdWxsV2lkdGgoKSB7XG5cdFx0cmV0dXJuICF0aGlzLmNzc0dyaWRFbmFibGVkICYmIHRoaXMuZnVsbFdpZHRoO1xuXHR9XG5cblx0Ly8gQ1NTIEdyaWRcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1jc3MtZ3JpZFwiKSBnZXQgY2NzR3JpZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jc3NHcmlkRW5hYmxlZCAmJiAhdGhpcy5pc1N1YmdyaWQ7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1jc3MtZ3JpZC0tY29uZGVuc2VkXCIpIGdldCBjY3NDb25kZW5zZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3NzR3JpZEVuYWJsZWQgJiYgIXRoaXMuaXNTdWJncmlkICYmIHRoaXMuY29uZGVuc2VkO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tY3NzLWdyaWQtLW5hcnJvd1wiKSBnZXQgY2NzTmFycm93KCkge1xuXHRcdHJldHVybiB0aGlzLmNzc0dyaWRFbmFibGVkICYmICF0aGlzLmlzU3ViZ3JpZCAmJiB0aGlzLm5hcnJvdztcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWNzcy1ncmlkLS1mdWxsLXdpZHRoXCIpIGdldCBjY3NGdWxsV2lkdGgoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3NzR3JpZEVuYWJsZWQgJiYgIXRoaXMuaXNTdWJncmlkICYmIHRoaXMuZnVsbFdpZHRoO1xuXHR9XG5cblx0Ly8gQ1NTIFN1YiBHcmlkXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tc3ViZ3JpZFwiKSBnZXQgc3ViR3JpZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jc3NHcmlkRW5hYmxlZCAmJiB0aGlzLmlzU3ViZ3JpZDtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXN1YmdyaWQtLWNvbmRlbnNlZFwiKSBnZXQgc3ViQ29uZGVuc2VkKCkge1xuXHRcdHJldHVybiB0aGlzLmNzc0dyaWRFbmFibGVkICYmIHRoaXMuaXNTdWJncmlkICYmIHRoaXMuY29uZGVuc2VkO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tc3ViZ3JpZC0tbmFycm93XCIpIGdldCBzdWJOYXJyb3coKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3NzR3JpZEVuYWJsZWQgJiYgdGhpcy5pc1N1YmdyaWQgJiYgdGhpcy5uYXJyb3c7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1zdWJncmlkLS13aWRlXCIpIGdldCBzdWJGdWxsV2lkdGgoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3NzR3JpZEVuYWJsZWQgJiYgdGhpcy5pc1N1YmdyaWQgJiYgdGhpcy5mdWxsV2lkdGg7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSkge31cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ3JpZE9ic2VydmFibGUuc3Vic2NyaWJlKChpc0Nzc0dyaWQ6IGJvb2xlYW4pID0+IHtcblx0XHRcdHRoaXMuY3NzR3JpZEVuYWJsZWQgPSBpc0Nzc0dyaWQ7XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBNYWtlIGFsbCBjaGlsZHJlbiBncmlkcyBhIHN1YiBncmlkXG5cdEBDb250ZW50Q2hpbGRyZW4oR3JpZERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBzZXQgY3NzR3JpZENoaWxkcmVuKGxpc3Q6IFF1ZXJ5TGlzdDxHcmlkRGlyZWN0aXZlPikge1xuXHRcdGlmICh0aGlzLmNzc0dyaWRFbmFibGVkKSB7XG5cdFx0XHRsaXN0LmZvckVhY2goKGdyaWQpID0+IHtcblx0XHRcdFx0Ly8gUHJldmVudHMgaW5pdGlhbCAocGFyZW50KSBncmlkIGVsZW1lbnQgZnJvbSBiZWluZyB0dXJuZWQgaW50byBhIHN1YmdyaWRcblx0XHRcdFx0aWYgKGdyaWQgPT09IHRoaXMpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Z3JpZC5pc1N1YmdyaWQgPSB0cnVlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVuc3Vic2NyaWJlIGZyb20gR3JpZCBTZXJ2aWNlIHN1YnNjcmlwdGlvblxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0fVxufVxuIl19