Skip to content

Instantly share code, notes, and snippets.

@Thanood
Created December 7, 2016 11:03
Show Gist options
  • Save Thanood/84902f36468f914041ef1b2244ed6804 to your computer and use it in GitHub Desktop.
Save Thanood/84902f36468f914041ef1b2244ed6804 to your computer and use it in GitHub Desktop.
Aurelia-Materialize bridge auto-focus
<template>
<require from="./md-auto-focus"></require>
<div>
Thanks to @swalters!
</div>
<p>
<md-input md-auto-focus md-wait-cursor.bind="loading" md-label="text field"></md-input>
</p>
</template>
export class App {
loading = false;
toggleLoading() {
this.loading =!this.loading;
}
}
<!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.20.2/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());
}
// src: https://gist.github.com/swalters/8d8772d20ee375df61277d5b048e6eb2
import {inject, customAttribute, TaskQueue} from 'aurelia-framework'
@customAttribute('md-auto-focus')
@inject(Element,TaskQueue)
export class AutoFocus {
constructor(element, taskQueue) {
this.element = element;
this.taskQueue = taskQueue;
}
attached(){
this.taskQueue.queueTask(() => {
var inputs = this.element.getElementsByTagName('input');
if(inputs.length > 0){
let input = inputs[0];
input.focus();
let label = input.nextElementSibling;
if (label.nodeName === "LABEL") {
this.taskQueue.queueTask(() => { label.classList.add("active"); });
}
}
else {
console.warn('No input element found for auto-focus');
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment