import { html, Component } from "../lib/index.js"; import { getNickURL } from "../state.js"; class MemberItem extends Component { constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); } shouldComponentUpdate(nextProps) { return this.props.nick !== nextProps.nick; } handleClick(event) { event.preventDefault(); this.props.onClick(); } render() { return html` <li> <a href=${getNickURL(this.props.nick)} class="nick" onClick=${this.handleClick}>${this.props.nick}</a> </li> `; } } export default class MemberList extends Component { shouldComponentUpdate(nextProps) { return this.props.members !== nextProps.members; } render() { return html` <ul> ${Array.from(this.props.members.entries()).sort().map(([nick, membership]) => html` <${MemberItem} key=${nick} nick=${nick} membership=${membership} onClick=${() => this.props.onNickClick(nick)}/> `)} </ul> `; } }