Skip to content

Instantly share code, notes, and snippets.

@davismj
Last active November 6, 2019 17:30
Show Gist options
  • Select an option

  • Save davismj/4ed6164d7edcf283f70ff1e6dd2164ef to your computer and use it in GitHub Desktop.

Select an option

Save davismj/4ed6164d7edcf283f70ff1e6dd2164ef to your computer and use it in GitHub Desktop.
"Select All" Checkbox
<template>
<p>
<label>
<input type="checkbox" checked.bind="canSort" change.delegate="if(canSort) sorting = 0" />
Enable Sorting
</label>
</p>
<p>
Sorting:
<label repeat.for="sort of sortings" if.bind="canSort || sort.value === 0">
<input type="radio" model.bind="sort.value" checked.bind="sorting" disabled.bind="!canSort" />${sort.label}
</label>
</p>
<table>
<thead>
<tr>
<th>
<input type="checkbox"
checked.one-way="selected.length === items.length"
indeterminate.bind="selected.length > 0 && selected.length < items.length"
change.delegate="selected = $event.target.checked ? items.slice() : []" />
</th>
<th>value</th>
</tr>
</thead>
<tbody>
<tr repeat.for="item of items | sort: sorting">
<td>
<input type="checkbox" checked.bind="selected" model.bind="item" />
</td>
<td>${item.value}</td>
</tr>
</tbody>
</table>
<p>
Selection:
<pre>${selectionJson}</pre>
</p>
</template>
export class App {
canSort = false;
sorting = 0;
selected = [];
sortings = [
{ label: 'none', value: 0 },
{ label: 'ascending', value: 1 },
{ label: 'descending', value: -1 }
];
items = [
{ value: 2 },
{ value: 1 },
{ value: 3 }
];
get selectionJson() {
return JSON.stringify(this.selected, null, 4);
}
sort = (a, b) => {
return (a.value - b.value) * this.sorting;
}
}
export class SortValueConverter {
toView(arr, dir) {
return arr.sort((a, b) => (a.value - b.value) * dir);
}
}
<!doctype html>
<html>
<head>
<title>Table Example</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</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-materialize-bundles/0.30.0/config2.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
</body>
</html>
/*******************************************************************************
* The following two lines enable async/await without using babel's
* "runtime" transformer. Uncomment the lines if you intend to use async/await.
*
* More info here: https://github.com/jdanyow/aurelia-plunker/issues/2
*/
//import regeneratorRuntime from 'babel-runtime/regenerator';
//window.regeneratorRuntime = regeneratorRuntime;
/******************************************************************************/
import 'materialize';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-materialize-bridge', bridge => bridge.useAll() );
aurelia.start().then(a => a.setRoot());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment