/** * @license * Copyright 2023 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import '@material/web/divider/divider.js'; import '@material/web/icon/icon.js'; import '@material/web/list/list.js'; import '@material/web/list/list-item.js'; import {MaterialStoryInit} from './material-collection.js'; import {css, html, nothing} from 'lit'; import {classMap} from 'lit/directives/class-map.js'; /** Knob types for list stories. */ export interface StoryKnobs { disabled: boolean; overline: string; trailingSupportingText: string; leadingIcon: boolean; trailingIcon: boolean; } const styles = css` md-list { border-radius: 8px; outline: 1px solid var(--md-sys-color-outline); max-width: 360px; overflow: hidden; width: 100%; } `; const standard: MaterialStoryInit = { name: 'List', styles, render(knobs) { return html` Single line item ${getKnobContent(knobs)} Two line item
Supporting text
${getKnobContent(knobs)}
Three line item
Second line text
Third line text
${getKnobContent(knobs, /* threeLines */ true)}
`; }, }; const interactive: MaterialStoryInit = { name: 'Interactive list', styles, render(knobs) { const knobsNoTrailing = {...knobs, trailingIcon: false}; return html` Link item link ${getKnobContent(knobsNoTrailing)} Button item ${getKnobContent(knobs)} Non-interactive item ${knobs.disabled ? '(disabled)' : nothing} ${getKnobContent(knobs)} `; }, }; function getKnobContent(knobs: StoryKnobs, threeLines = false) { const overline = knobs.overline ? html`
${knobs.overline}
` : nothing; const classes = { 'align-start': threeLines, }; const trailingText = knobs.trailingSupportingText ? html`
${knobs.trailingSupportingText}
` : nothing; const leadingIcon = knobs.leadingIcon ? html`event` : nothing; const trailingIcon = knobs.trailingIcon ? html`star` : nothing; return [overline, trailingText, leadingIcon, trailingIcon]; } /** List stories. */ export const stories = [standard, interactive];