Skip to content

Instantly share code, notes, and snippets.

@ronaksbhavsar
Last active April 20, 2017 05:22
Show Gist options
  • Save ronaksbhavsar/77bc6f56715d90ed3cb78b5b83f9bc2c to your computer and use it in GitHub Desktop.
Save ronaksbhavsar/77bc6f56715d90ed3cb78b5b83f9bc2c to your computer and use it in GitHub Desktop.
enforce minimum column width grid
<template>
<require from="aurelia-kendoui-bridge/grid/grid"></require>
<require from="aurelia-kendoui-bridge/grid/col"></require>
<require from="aurelia-kendoui-bridge/common/template"></require>
<require from="aurelia-kendoui-bridge/button/button"></require>
<div id="example">
<div class="demo-section k-content">
<ak-grid k-height="300" k-widget.bind="grid" k-on-ready.delegate="onReady($event.detail)" k-resizable.bind="true" k-data-source.bind="datasource" k-sortable.bind="true">
</ak-grid>
</div>
<button ak-button click.delegate="clickAutoSize()"><span>Autosize</span></button>
</div>
</template>
export class BasicUsage {
grid
minTableWidth;
minColumnWidth = 100;
th;
idx;
constructor() {
}
clickAutoSize(){
}
bind(){
}
onReady(grid) {
grid.setOptions({
scrollable: true,
columns: this.createColumns(),
resizable: true,
reorderable: true,
dataSource: {
type: 'odata',
transport: {
read: '//demos.telerik.com/kendo-ui/service/Northwind.svc/Customers'
},
}
});
grid.resizable.unbind("start").bind("start", (e) => this.resizeStartGrid(e));
grid.resizable.unbind("resize").bind("resize", (e) => { this.resizeGrid(e); });
}
resizeStartGrid(e){
debugger;
this.th = $(e.currentTarget).data("th");
this.idx = this.th.index();
this.grid = this.th.closest(".k-grid").data("kendoGrid");
let currentField = this.th.attr("data-field");
let column = this.grid.getOptions().columns.find(x => x.field === currentField);
this.minColumnWidth = +column.width;
}
resizeGrid(e){
debugger;
if (this.th.width() >= this.minColumnWidth) {
this.minTableWidth = this.grid.tbody.closest("table").width();
}
if (this.th.width() < this.minColumnWidth) {
// the next line is ONLY needed if Grid scrolling is enabled
this.grid.thead.closest("table").width(this.minTableWidth)
.children("colgroup").find("col").eq(this.idx).width(this.minColumnWidth);
this.grid.tbody.closest("table").width(this.minTableWidth)
.children("colgroup").find("col").eq(this.idx).width(this.minColumnWidth);
}
}
createColumns(){
return [{
field: "ContactName",
title: "Contact Name",
width: 200,
locked: true,
},
{
field: "ContactTitle",
title: "Contact Title",
width: 200,
locked: false
},
{
field: "CompanyName",
title: "Company Name",
width: 200,
locked: false
}
,
{
field: "Country",
title: "Country",
width: 200,
locked: false
},
{ field: "", locked: false,width: "auto", }
]
}
}
<!doctype html>
<html>
<head>
<title>Aurelia KendoUI bridge</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2016.2.714/styles/kendo.common.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2016.2.714/styles/kendo.rtl.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2016.2.714/styles/kendo.default.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2016.2.714/styles/kendo.mobile.all.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.4.0/bluebird.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/1.2.1/chroma.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2016.2.714/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2016.2.714/js/jszip.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2016.2.714/js/kendo.all.min.js"></script>
</head>
<body aurelia-app="main">
<h1>Loading...</h1>
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.6/system.js"></script>
<script src="https://rawgit.com/aurelia-ui-toolkits/aurelia-kendoui-bundles/1.5.0/config2.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
</body>
</html>
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-kendoui-bridge');
aurelia.start().then(a => a.setRoot());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment