carbon-components-angular
Version:
Next generation components
176 lines • 16.6 kB
JavaScript
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