Maslosoft Binder Documentation
Knockout JS tracker and binding handlers with coffee and sugar
CSS Columns
This binding handler will apply bootstrap CSS columns based on value. There are two variants of this binding:
cssColumnSizes- will apply column sizes as passed to observable modelcssColumns- will apply classes to create grid with number of columns as passed to observable model
Value passed to bindings must be object with properties named same as sizes and size width as values.
Configuring
Both binding can be configured by specifying sizes to CSS classes template. The configuration properties are:
Maslosoft.Binder.CssColumnSizes.columnsforcssColumnSizesbindingMaslosoft.Binder.CssColumns.columnsforcssColumnsbinding
Class names contain placeholder {num} which will be replaces by observable value.
Property columns must be object with property names corresponding to size names
same as in passed observable. Values must be class names containing {num}
placeholder.
Example configuration
Maslosoft.Binder.CssColumnSizes.columns = {
'xs': 'col-xs-{num}',
'sm': 'col-sm-{num}',
'md': 'col-md-{num}',
'lg': 'col-lg-{num}'
}
Live Example
Current device size: Large Medium Small Very small
cssColumnSizes binding
In example of cssColumnSizes binding column sizes are dynamically adjusted depending on observable value.
cssColumns binding
In example of cssColumns number of columns depends on observable value.
Relevant code used in examples:
<div class="row" data-bind="with: binder.model.layout">
<div data-bind="cssColumnSizes: sizes" class="btn-success">
First column
</div>
<div data-bind="cssColumnSizes: sizes" class="btn-success">
Second column
</div>
<div data-bind="cssColumnSizes: sizes" class="btn-success">
Third column
</div>
</div>
<div class="row" data-bind="with: binder.model.layout">
<div data-bind="cssColumns: columns" class="btn-success">
First column
</div>
<div data-bind="cssColumns: columns" class="btn-success">
Second column
</div>
<div data-bind="cssColumns: columns" class="btn-success">
Third column
</div>
</div>
<script>
window.onload = (function(){
binder.model.layout = new Maslosoft.Koe.Columns({
sizes: new Maslosoft.Koe.UiColumns,
columns: new Maslosoft.Koe.UiColumns({
lg: 3,
md: 3,
sm: 3,
xs: 3
})
});
ko.applyBindings({model: binder.model}, document.getElementById('ko-binder'));
});
</script>