Skip to content

Instantly share code, notes, and snippets.

@arjendeblok
Forked from MaximBalaganskiy/index.html
Last active October 20, 2020 06:29
Show Gist options
  • Save arjendeblok/01ac584061194a3093bb58cec8bbe8a6 to your computer and use it in GitHub Desktop.
Save arjendeblok/01ac584061194a3093bb58cec8bbe8a6 to your computer and use it in GitHub Desktop.
aurelia-mdc-web
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Dumber Gist</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<base href="/">
</head>
<!--
Dumber gist uses dumber bundler, the default bundle file
is /dist/entry-bundle.js.
The starting module is pointed to aurelia-bootstrapper
(data-main attribute on script) for Aurelia,
The aurelia bootstrapper then loads up user module "main"
(aurelia-app attribute on <body>) which is your src/main.ts.
-->
<body aurelia-app="main" class="mdc-typography">
<script src="/dist/entry-bundle.js" data-main="aurelia-bootstrapper"></script>
</body>
</html>
{
"dependencies": {
"aurelia-bootstrapper": "^2.3.3"
}
}
<template>
<require from="@material/button/dist/mdc.button.css"></require>
<require from="@material/textfield/dist/mdc.textfield.css"></require>
<require from="@material/typography/dist/mdc.typography.css"></require>
<require from="@material/list/dist/mdc.list.css"></require>
<require from="@material/menu/dist/mdc.menu.css"></require>
<require from="@material/menu-surface/dist/mdc.menu-surface.css"></require>
<require from="./app.scss"></require>
<!-- Try to create a css/scss/sass/less file then require it here -->
<h1 mdc-headline3>${message}</h1>
<mdc-text-field label="Contact" ref="input"></mdc-text-field>
<mdc-text-field-helper-line></mdc-text-field-helper-line>
<mdc-lookup options.bind="search" preload-options="none" hoist-to-body
value.bind="lookedUp & validateOnChange" input.bind="input">
<template replace-part="option">
<mdc-list-item-primary-text>${option}</mdc-list-item-primary-text>
</template>
<template replace-part="error">
<mdc-list-item-primary-text style="color: red;">${errorMessage}</mdc-list-item-primary-text>
</template>
</mdc-lookup>
<div>
You selected "${lookedUp}"
</div>
</template>
@use "@material/button/mdc-button";
@use "@material/menu/mdc-menu";
@use "@material/textfield/mdc-textfield";
@use "@material/elevation/mdc-elevation";
@use "@material/list/mdc-list";
@use "@material/typography/mdc-typography";
import { autoinject } from 'aurelia-framework';
import { ValidationController, ValidationControllerFactory, ValidationRules } from 'aurelia-validation';
@autoinject
export class App {
public message: string = 'Hello Aurelia MDC Lookup!';
none: string[] = [];
somethingToAdd: string = "Doe";
validationController: ValidationController;
constructor(private validationControllerFactory: ValidationControllerFactory) {
this.validationController = validationControllerFactory.createForCurrentScope();
}
search(filter: string, value: unknown): Promise<string[]> {
console.log(`searching on '${filter}' '${value}'`);
if(value) {
return Promise.resolve<string[]>([value]);
} else if(filter) {
if(filter.length > 1) {
// get something from a backend
let option1 = filter + " " + this.somethingToAdd;
let option2 = filter + " Orange";
let backendReturns = [option1, option2];
if(filter == "zz") {
backendReturns = [];
}
let promise = new Promise<string[]>((resolve, reject) => {
let wait = setTimeout(() => {
resolve(backendReturns);
}, 500);
});
return promise;
}
else {
return Promise.reject(new Error("Please type a mininum of two characters"));
}
}
else { // no value and no filter
return Promise.reject(new Error("Please type in something first"));
}
}
}
import {Aurelia, PLATFORM} from 'aurelia-framework';
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging('info')
.plugin(PLATFORM.moduleName('aurelia-validation'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/base'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/button'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/ripple'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/menu'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/lookup'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/line-ripple'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/floating-label'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/typography'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/text-field'))
.plugin(PLATFORM.moduleName('@aurelia-mdc-web/validation'))
;
aurelia.start().then(() => aurelia.setRoot());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment