let col = new EgGridColumn();
col.name = this.name;
col.path = this.path;
- col.label = this.label || this.name;
- col.flex = this.flex || 2;
+ col.label = this.label;
+ col.flex = this.flex;
col.hidden = this.hidden;
col.cellTemplate = this.cellTemplate;
col.isPkey = this.pkey;
<span title="Show Grid Options" i18n-title class="material-icons">arrow_drop_down</span>
</button>
<div class="dropdown-menu" ngbDropdownMenu>
- <a class="dropdown-item label-with-material-icon" (click)="columnConfDialog.open({size:'lg'})">
+ <a class="dropdown-item label-with-material-icon"
+ (click)="columnConfDialog.open({size:'lg'})">
<span class="material-icons">build</span>
<span class="ml-2" i18n>Manage Columns</span>
</a>
+ <a class="dropdown-item label-with-material-icon"
+ (click)="colWidthConfig.isVisible = !colWidthConfig.isVisible">
+ <span class="material-icons">compare_arrows</span>
+ <span class="ml-2" i18n>Manage Column Widths</span>
+ </a>
<div class="dropdown-divider"></div>
<a class="dropdown-item label-with-material-icon"
import {EgGridService, EgGridColumn, EgGridColumnSet, EgGridToolbarButton}
from '@eg/share/grid/grid.service';
import {EgDialogComponent} from '@eg/share/dialog/dialog.component';
+import {EgGridColumnWidthComponent} from './grid-column-width.component';
@Component({
selector: 'eg-grid-toolbar',
@Input() pager: Pager;
@Input() toolbarButtons: EgGridToolbarButton[];
@Input() columnSet: EgGridColumnSet;
+ @Input() colWidthConfig: EgGridColumnWidthComponent;
ngOnInit() {
border-color: #b8daff;
}
-/*
-.eg-grid-header-cell a.sortable span {
-*/
.eg-grid-header-cell-sort-label {
cursor: pointer;
- color: #007bff;
- text-decoration:underline;
+ text-decoration: underline;
}
.eg-grid-header-cell-sort-arrow {
}
.eg-grid-cell {
- flex: 1; /* applied per column */
+ flex: 2; /* applied per column */
padding: 6px;
}
flex: none;
}
+/* depends on width of .eg-grid-cell-skinny */
+.eg-grid-column-width-header {
+ width: 4.4em;
+ text-align: center;
+ flex: none;
+ display: inline-flex;
+ vertical-align: middle;
+ align-items: center;
+}
+
+.eg-grid-column-width-config .eg-grid-cell {
+ border-left: 2px dashed grey;
+}
+
+.eg-grid-column-width-icon {
+ cursor: pointer;
+ font-size: 18px;
+ color: #007bff;
+}
+
+.eg-grid-column-config-dialog {
+ height: auto;
+ max-height: 400px;
+ overflow: auto;
+ box-shadow: none;
+}
+
.eg-grid-column-config-dialog .visible {
color: #000;
background-color: rgb(201, 221, 225);
}
+
<div class="eg-grid">
- <eg-grid-toolbar [dataSource]="dataSource" [pager]="pager"
- [toolbarButtons]="toolbarButtons" [columnSet]="columnSet"></eg-grid-toolbar>
+ <eg-grid-toolbar
+ [dataSource]="dataSource" [pager]="pager"
+ [toolbarButtons]="toolbarButtons" [columnSet]="columnSet"
+ [colWidthConfig]="colWidthConfig">
+ </eg-grid-toolbar>
<eg-grid-header [columnSet]="columnSet" [dataSource]="dataSource"></eg-grid-header>
+ <eg-grid-column-width #colWidthConfig [columnSet]="columnSet"></eg-grid-column-width>
<div class="eg-grid-row eg-grid-body-row"
[ngClass]="{'eg-grid-row-selected': selector[idx]}"
import {EgGridService} from './grid.service';
import {EgGridToolbarButtonComponent} from './grid-toolbar-button.component';
import {EgGridColumnConfigComponent} from './grid-column-config.component';
+import {EgGridColumnWidthComponent} from './grid-column-width.component';
@NgModule({
EgGridHeaderComponent,
EgGridToolbarComponent,
EgGridToolbarButtonComponent,
- EgGridColumnConfigComponent
+ EgGridColumnConfigComponent,
+ EgGridColumnWidthComponent
],
imports: [
EgCommonModule
if (this.columns.filter(c => c.name == col.name).length) return;
if (col.isPkey) this.pkeyColumn = col;
+ if (!col.flex) col.flex = 2;
+ if (!col.label) col.label = col.name;
col.visible = !col.hidden;