jiro-ui
Version:
A Mithril.js UI library based from construct-ui
52 lines (42 loc) • 1.31 kB
text/typescript
import m from 'mithril';
import { Col, Grid, Icon, Icons, Card, Input } from '@/';
const iconNames = Object.keys(Icons).slice(1);
export class IconsExample {
private searchQuery: string = '';
public view() {
const icons = this.getFilteredIcons();
const searchInput = m(Input, {
autofocus: true,
contentLeft: m(Icon, { name: Icons.SEARCH }),
contentRight: this.searchQuery ? m(Icon, {
name: Icons.X,
onclick: () => this.searchQuery = ''
}) : undefined,
fluid: true,
placeholder: 'Search icons...',
oninput: (e: Event) => this.searchQuery = (e.target as HTMLInputElement).value,
style: 'margin-bottom: 30px',
value: this.searchQuery
});
const cols = icons.map(iconName => m(Col, { span: 4 }, [
m(Card, { class: 'cui-example-icon-card', interactive: true }, [
m(Icon, {
name: Icons[iconName],
size: 'xl'
}),
m('span', Icons[iconName])
])
]));
return [
searchInput,
m(Grid, { gutter: 10 }, cols)
];
}
private getFilteredIcons() {
if (!this.searchQuery) {
return iconNames;
}
const query = this.searchQuery.toLowerCase();
return iconNames.filter(iconName => Icons[iconName].toLowerCase().includes(query));
}
}