Skip to content

Instantly share code, notes, and snippets.

@Ullfis
Forked from Thanood/app.html
Last active September 13, 2016 20:51
Show Gist options
  • Save Ullfis/7611b6ad8fc700af6492951928e5424e to your computer and use it in GitHub Desktop.
Save Ullfis/7611b6ad8fc700af6492951928e5424e to your computer and use it in GitHub Desktop.
Aurelia - Materialize Select auto-width
<template>
<require from="./auto-width"></require>
<div auto-width.bind="inputValue1">
<select md-select value.two-way="inputValue1">
<option value="" disabled selected>select an item</option>
<option value="item 1">item 1</option>
<option value="item longer">item longer</option>
<option value="item even longer">item even longer</option>
</select>
</div>
<md-input md-label="put some text here" md-value.bind="inputValue2" auto-width.bind="inputValue2"></md-input>
<input value.bind="disconnected" auto-width.bind="disconnected" />
</template>
export class App {
inputValue1 = '';
inputValue2 = 200;
}
import { customAttribute } from 'aurelia-templating';
import { inject } from 'aurelia-dependency-injection';
import { getLogger } from 'aurelia-logging';
@inject(Element)
@customAttribute('auto-width')
export class AutoWidthInput {
log = getLogger('auto-width');
constructor(element) {
this.element = element;
if (this.element.localName === 'md-input') this.element = this.element.querySelector('.input-field');
}
bind() {
this.valueChanged(this.value);
}
valueChanged(newValue) {
let width = this.getWidth((newValue || '').toString());
this.element.style.width = width + 'px';
this.log.debug('Width Changed to:' + width);
}
getWidth(value) {
let width = ((value.length + 1) * 9);
if (isNaN(width)) width = 9;
return width;
}
}
<!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.8.1/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;
/******************************************************************************/
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