Skip to content

Instantly share code, notes, and snippets.

@Thanood
Last active March 23, 2017 10:37
Show Gist options
  • Save Thanood/b44037b650c5190f002a52d1295bfbfe to your computer and use it in GitHub Desktop.
Save Thanood/b44037b650c5190f002a52d1295bfbfe to your computer and use it in GitHub Desktop.
Aurelia-Materialize bridge toggle button
<template>
<md-colors md-primary-color="#ee6e73" md-accent-color="#2bbbad"></md-colors>
<require from="materialize/dist/css/materialize.css"></require>
<require from="./md-toggle-button"></require>
<div>
<button md-toggle-button="is-toggled.bind: isToggled;">
<i class="material-icons">format_indent_increase</i>
</button>
</div>
<div>
Toggled? ${ isToggled ? 'true' : 'false' }
</div>
</template>
export class App {
isToggled = false;
}
<!doctype html>
<html>
<head>
<title>Aurelia</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<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.25.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());
}
import {bindable, customAttribute, bindingMode, inject} from 'aurelia-framework';
@customAttribute('md-toggle-button')
@inject(Element)
export class MdToggleButton {
@bindable({ defaultBindingMode: bindingMode.twoWay }) isToggled = false;
constructor(element) {
this.element = element;
this.handleClick = this.handleClick.bind(this);
}
attached() {
this.element.classList.add('btn');
this.element.classList.add('btn-flat');
this.element.addEventListener('click', this.handleClick)
}
detached() {
this.element.classList.remove('btn');
this.element.classList.remove('btn-flat');
this.element.removeEventListener('click', this.handleClick)
}
isToggledChanged(newValue) {
if (newValue) {
this.element.classList.add('accent');
} else {
this.element.classList.remove('accent');
}
}
handleClick() {
this.isToggled = !this.isToggled;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment